2010-07-13 24 views
1

我有一个C++程序,因为内存不足错误而死。
你知道一个用于C++程序的工具,它显示哪个程序行分配了多少堆?

你知道一个用于C++程序的工具,它显示哪个程序行分配了多少堆?
我想确定程序的哪一部分占用了大部分堆。
谢谢。
平台:Microsoft C++ ... Windows

顺便说一下,可以堆腐败导致过多的内存使用情况?
解决方案: 这不是堆腐败。一些未初始化的变量用于分配内存量。 我使用了valgrind,它立即显示了问题(包括巨大的分配和未初始化的变量)。

+2

编译器?平台? – Cogwheel 2010-07-13 19:45:54

回答

3

您可以在Windows平台上使用* nix平台上的valgrindcrtdbg检查。

0

在Visual Studio中,如果你得到一个在调试时这种异常,代码将在异常点时中断。然后,您可以浏览调用堆栈,以确切了解到目前为止每个功能中您的位置。我假设类似的东西会适用于其他平台。

+0

这可能是错误的情况下堆损坏。 – 2010-07-13 19:51:04

+0

FWIW,“顺便说一下”在我回答后加入了...... – Cogwheel 2010-07-13 20:00:59

相关问题