我对在 C++ Builder 6 下编写的一些应用程序有问题。运行一段时间(周、月)后,应用程序崩溃并关闭,没有任何错误消息。在崩溃前不久的应用程序日志中,我收到了许多“内存不足”异常。当它抛出内存异常(下面的屏幕截图)时,我查看了该进程,它有很多未提交的私有内存空间。这种行为的原因是什么?
几年前,我曾经遇到过这样的问题。原因是链接器选项中未选中“使用动态库”选项。当我检查回来时,问题消失了,反之亦然。我制作的测试应用程序只是调用“new char [1000000]”然后删除。每次都释放内存(Windows 任务管理器中没有提交的内存增加),但一段时间后我的内存不足,VMMap 显示完全相同的内容。大量保留的私有内存,但大部分未提交。
现在问题又回来了,但我不能以同样的方式解决它。我不知道这是否是原因,但我将 Builder 6 和 2010 安装在同一台机器上。现在我只有 Builder 6,似乎我无法像以前一样使用测试应用程序重现错误。以太方式似乎存在一些内存管理器错误或其他东西。CodeGuard 不显示任何内存泄漏。当我用“新”创建内存块时,它会立即显示在“内存提交大小”中,当删除时内存使用量减少,所以我假设内存泄漏不是这种情况,任务管理器没有显示太多“内存提交大小” .
有什么我可以做的吗?有什么办法可以释放未提交的内存?如何进一步诊断问题?
截图:http: //i.stack.imgur.com/UKuTZ.jpg