如何调试可能的堆损坏?

时间:2012-07-24 17:54:33

标签: c windows-xp heap-corruption

VS2008,C。还使用了一些预先构建的库。 当我在调试器中调试我的代码并调用库函数时,我得到了这个:

  

HEAP [unit_test.exe]:Heap在附近的承诺范围内缺少最后一个条目   35c70 Windows在unit_test.exe中触发了断点。

     

这可能是由于堆的损坏,这表明存在错误   unit_test.exe或它加载的任何DLL。

     

这也可能是因为用户在unit_test.exe时按F12   对焦。

     

输出窗口可能包含更多诊断信息。

关于如何调试这个的任何想法?

更新:我重构了代码并看到我在执行printf()时获得了弹出窗口。当有free()时我也会得到它。我注释掉那些行,现在当有malloc()时,我得到了堆损坏弹出对话框。

1 个答案:

答案 0 :(得分:4)

我建议您首先使用Application Verifier来测试堆损坏。 Application Verifier是Microsoft提供的免费工具,可帮助识别资源泄漏和堆损坏。您可以在网址找到App Verifier:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=20028您可以在http://technet.microsoft.com/en-us/library/bb457063.aspx

找到如何为堆损坏和其他内容启用它

在这些情况下通常很有用。