0

我试图理解我正在使用的 C++ 代码给出了内存不足的错误。这是一个科学代码,有几个标志变量来打开/关闭一堆代码功能。当关闭几个功能时,代码可以正常工作。但是,当这些例程处于活动状态时,会导致“内存不足”的情况......

Qsub 创建的错误文件,显示退出状态:-4

由于一个或多个节点内存不足而终止作业。在我添加一些内容之前,我正在谈论的功能曾经可以正常工作。我基本上创建了一些指针,初始化为 NULL,创建一个与之关联的内存块,在其中存储一些感兴趣的数量,然后删除 []*p

我正在努力找出问题的根源。我想知道是什么原因造成的。我相信它是一些 C++ 编程错误(由于我对 C++ 缺乏经验,我忽略了它)。有没有办法找出错误是什么......它在哪里或如何解决它。

我想到了一些想法, - 使用 try{ } catch {} - 运行一些内存程序来跟踪系统中的内存使用情况(实时) - 在这种情况下调试 MPI/C++ 代码的任何其他有效方法。

  • 我阅读了有关堆栈和堆以及如何存储内存的内容......动态声明二维数组,一维数组的最安全方法是什么......基于指针或基于数组定义......?

请用你的想法教育我。

4

1 回答 1

0

valgrind应该能够告诉您内存泄漏的位置。

于 2012-07-10T22:41:08.470 回答