QList 的释放分两种情况:
1.T的类型为非指针,这时候直接调用clear()方法就可以释放了,看如下测试代码
#include#include#include
intmain(intargc, char*argv[]){ QCoreApplication a(argc, argv); typedef struct_test{ intid; QString name; QString sex; }Por_test; QList slist; for(inti=0;i<100000;i++) { Por_test s; s.id= 1; s.name= QString("hello World!"); s.sex= QString("男"); slist.append(s); } slist.clear(); returna.exec();}
将上面代码中的slist.clear(); 注释掉,内存显示为如下(任务管理器里的截图)

如不去掉的话,内存显示如下图

2.T的类型为指针的情况,这时候直接调用clear()方法将不能释放,先看代码
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
typedef struct _test

本文详细介绍了Qt中QList处理指针类型的内存管理问题。当QList中存储的是指针时,仅调用clear()方法无法释放内存,需要先使用qDeleteAll()来确保内存正确释放。通过示例代码和内存使用对比,强调了在处理指针时使用qDeleteAll()的重要性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



