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

Qt 当QList变得太大时,应用程序崩溃,qt,dynamic-memory-allocation,qlist,Qt,Dynamic Memory Allocation,Qlist,我制作了一个应用程序,它必须在内存中存储大量数据以提高计算性能 它是列表和对象的层次结构,其中顶部对象是QList。加载数据时,会创建大量新myObject*的实例并将其添加到列表中。内存消耗增加,当达到~1.9Gb时,程序崩溃。我的计算机(Vista)有4Gb内存,我在其他内存较少(XP)的计算机上测试过,它在同一点崩溃。我可以使用不超过1.9Gb的RAM吗 当加载一个较小的文件,并且根据“Windows任务管理器”的内存使用量为(比如)1.2Gb时,我可以处理数据。但如果我想加载另一个文件,

我制作了一个应用程序,它必须在内存中存储大量数据以提高计算性能

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

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


非常感谢您的建议。

如果您有32位Windows,那么您的进程只能使用2GB内存。您无法用32位寻址更多内存。如果您需要更多内存,也许您应该改为64位Windows。

如果您有32位Windows,那么您的进程只能使用2 GB内存。您无法用32位寻址更多内存。如果您需要更多内存,可能应该改为64位Windows。

您确定删除对象有效吗?检查对象的析构函数。试试cppcheck,它可以检测到一些内存泄漏。您确定删除对象有效吗?检查对象的析构函数。请尝试cppcheck,它可以检测一些内存泄漏。对于记录,在64位窗口上,32位进程最多可以使用4 GB内存。对于记录,在64位窗口上,32位进程最多可以使用4 GB内存。