gpt4 book ai didi

qt - QList 中的动态内存

转载 作者:行者123 更新时间:2023-12-04 13:13:35 26 4
gpt4 key购买 nike

我对 QT 没有太多经验,今天出现了这个问题。

QList<int> memList;
const int large = 100000;

getchar();
for (int i=0; i<large; i++)
{
memList.append(i);
}

cout << memList.size() << endl;
getchar();

for (int i=0; i<large; i++)
{
memList.removeLast();
}

cout << memList.size() << endl;
getchar();

在第一次循环后,当我检查内存使用情况时,它会随着新元素附加到 memList 而上升,但在第二次循环中删除它们后,内存使用量保持在同一水平。我认为 QList 是动态的,当元素被移除时它会释放内存。所以要么我遗漏了一些东西(很有可能),要么它不是动态结构。您对如何让它发挥作用有任何想法吗?

问候

最佳答案

来自docs看来这是预期的行为:

Note that the internal array only ever gets bigger over the life of the list. It never shrinks. The internal array is deallocated by the destructor and by the assignment operator, when one list is assigned to another.

如果你想取消分配内存,你有几个选择

  1. 确保调用了析构函数(使用 delete {假设您首先新建了列表},或允许 QList 对象超出范围)
  2. 为您的大列表分配一个空列表(认为这会起作用)

关于qt - QList 中的动态内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com