当QList变得太大时,应用程序崩溃

时间:2010-07-08 13:56:22

标签: qt dynamic-memory-allocation qlist

我创建了一个必须在内存中存储大量数据的应用程序,以提高计算性能。

它是列表和对象的层次结构,其中顶部对象是QList<myObject*>。加载数据时,会创建许多new myObject*个实例并将其添加到列表中。内存消耗增长,当达到~1.9Gb时程序崩溃。我的电脑(Vista)有4Gb内存,我已经在其他计算机上测试了较少的内存(XP),它在同一点崩溃了。我可以使用超过1.9Gb的RAM吗?

当加载较小的文件并且根据“Windows任务管理器”的内存使用量(例如)1.2Gb时,我可以处理数据。但是如果我想加载另一个文件,即使在所有对象上调用delete并清除列表之后,增长也从1.2Gb开始。为什么呢?
我尝试切换到QVector并调用squeeze(),但内存保持不变。我在这里读过关于QLists中动态内存分配的其他线程,但是在加载新文件之前是否真的无法重置内存?特别是因为它在1.9Gb之后崩溃;按顺序加载3个小文件,我就在那里。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:4)

如果您有32位Windows,那么您的进程只能使用2 GB内存。你不能用32位来处理更多的内存。如果您需要更多内存,可能应该更改为64位Windows。