我正在尝试使用QList后释放内存,但它似乎无法正常工作。 这是我的代码:
QList<double> * myList;
myList = new QList<double>;
double myNumber;
cout << "CP1" << endl;
getchar(); // checkpoint 1
for (int i=0; i<1000000; i++)
{
myNumber = i;
myList->append(myNumber);
cout << myList->size() << endl;
}
cout << "CP2!" << endl;
getchar(); // checkpoint 2
for (int i=999999; i>0; i--)
{
myList->removeLast();
cout << myList->size() << endl;
}
cout << "CP3!" << endl;
getchar(); // checkpoint 3
delete myList;
cout << "CP4!" << endl;
getchar(); // checkpoint 4
内存使用情况:
所以看起来尽管删除了元素并删除了myList
仍在使用大部分内存。我相信有办法处理它,但我找不到它。
提前感谢您的帮助。
的Pawel
答案 0 :(得分:3)
内存管理器不需要释放程序分配的内存。你的释放没有问题。
答案 1 :(得分:0)
QList是基于数组的列表。阵列会自动扩展,但不会自动缩小。从列表中删除元素不会影响数组的大小。
要将数组修剪为实际大小,请创建一个新的QList并将其添加到其中。然后删除原始列表。
不幸的是,似乎没有方便的方法来执行此操作,例如.NET中的List.TrimExcess()。