【问题标题】:App crashes when QList grows too large当 QList 变得太大时应用程序崩溃
【发布时间】:2011-03-13 08:50:56
【问题描述】:

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

它是列表和对象的层次结构,其中顶部对象是QList&lt;<em>myObject*</em>&gt;。加载数据时,会创建很多new myObject* 的实例并将其添加到列表中。内存消耗增加,当涉及到 ~1.9Gb 时,程序崩溃。我的电脑 (Vista) 有 4Gb RAM,我已经在其他 RAM (XP) 较少的电脑上进行了测试,但它同时崩溃了。我不能使用超过 1.9Gb 的 RAM 吗?

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

非常感谢您的任何建议。

【问题讨论】:

标签: qt dynamic-memory-allocation qlist


【解决方案1】:

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

【讨论】:

  • 郑重声明,在 64 位 Windows 上,32 位进程最多可以使用 4 GB 内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多