qDeleteAll与clear
2024-08-22 03:19:35
qDeleteAll:专门用于指针容器,对容器或者迭代器中的每个对象进行delete操作,而不是从容器中移除对象。源代码如下:
void qDeleteAll(ForwardIterator begin, ForwardIterator end)
{
while (begin != end)
{
delete *begin;
++begin;
}
}
```
测试代码如下:
typedef struct _Defs
{
int a;
double d;
QString s;
} Def; QList<Def*> defs;
for(int i=;i<;i++)
{
Def* dd = new Def;
dd->a = ;
dd->d = 4.23;
dd->s = "jda";
defs.append(dd);
}
qDebug()<<"before qDeleteAll: "<<defs.size();
qDeleteAll(defs);
qDebug()<<"after qDeleteAll: "<<defs.size();
defs.clear();
``
运行结果发现,不调用qDeleteAll`的情况下,程序占内存78M;加上之后,只占内存12M。但是前后的size没有变化。
当T的类型为指针时,调用clear方法能置空,但并不能释放其内存。qDeleteAll可以释放容器元素内存,但没有对容器的置空操作,也就是size没变。所以qDeleteAll之后必须加上clear方法。
原文:https://blog.csdn.net/yao5hed/article/details/81092139
最新文章
- 我所理解的ECMAScript、DOM、BOM---写给新手们
- 【转】Java-----jar反编译修改重新打包
- Roadblocks(poj 3255)
- CentOS和Ubuntu下安装配置Greenplum数据库集群(包括安装包和源码编译安装)
- excel让每个单元格的宽度随着字体自动变动的两种方式(有更好方法的大神,请忽略,求评论下)
- Python实现Apriori
- setTimeout/setInterval
- [转]ASP.NET MVC 入门6、TempData
- Oracle EBS-SQL (INV-6):检查监督帐户别名处理.sql
- Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS
- shell脚本并发执行
- 非常完善的Log4net详细说明(转)
- 升级 Centos 6.5/6.7 的 php 版本
- JDK线程池的使用
- css优化,提高性能
- 每天一个linux命令:ifconfig命令 临时修改重启后恢复原样
- 2018.09.25 codeforces1053E. Euler tour(并查集+st表+模拟)
- LDAP落地实战(一):OpenLDAP部署及管理维护
- thrift框架
- 6-Ubuntu与Windows不能相互复制