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

最新文章

  1. 我所理解的ECMAScript、DOM、BOM---写给新手们
  2. 【转】Java-----jar反编译修改重新打包
  3. Roadblocks(poj 3255)
  4. CentOS和Ubuntu下安装配置Greenplum数据库集群(包括安装包和源码编译安装)
  5. excel让每个单元格的宽度随着字体自动变动的两种方式(有更好方法的大神,请忽略,求评论下)
  6. Python实现Apriori
  7. setTimeout/setInterval
  8. [转]ASP.NET MVC 入门6、TempData
  9. Oracle EBS-SQL (INV-6):检查监督帐户别名处理.sql
  10. Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS
  11. shell脚本并发执行
  12. 非常完善的Log4net详细说明(转)
  13. 升级 Centos 6.5/6.7 的 php 版本
  14. JDK线程池的使用
  15. css优化,提高性能
  16. 每天一个linux命令:ifconfig命令 临时修改重启后恢复原样
  17. 2018.09.25 codeforces1053E. Euler tour(并查集+st表+模拟)
  18. LDAP落地实战(一):OpenLDAP部署及管理维护
  19. thrift框架
  20. 6-Ubuntu与Windows不能相互复制

热门文章

  1. 【LEETCODE】58、数组分类,适中级别,题目:238、78、287
  2. vue中$router与$route的区别
  3. 【C#】上机实验二
  4. [洛谷P5431]【模板】乘法逆元2
  5. C# vb .net实现扭曲角特效滤镜图像处理
  6. PCL中将回调函数封装到类中
  7. tp5模板中js方法中url函数传参的解决办法
  8. js常用的数组去重方法
  9. Python开发之路:目录篇
  10. PHP标记风格,编码规范