2012-07-24 212 views
3

VS2008,C.还使用一些预建库。 当我通过我的代码在调试器和在库函数被调用步骤,我得到这个:如何调试可能的堆损坏?

HEAP [unit_test.exe]:堆失踪近 35c70的Windows在承诺范围内最后一个条目已触发断点在unit_test.exe中。

这可能是由于堆损坏引起的,这表明 unit_test.exe或其中已加载的任何DLL错误。

这也可能是由于用户按F12,而unit_test.exe具有 焦点。

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

有关如何调试的任何想法?

更新:我重构了代码,看到在执行printf()时我得到了弹出窗口。有空闲时我也会得到它()。我注释掉了这些行,现在有一个malloc()时,我得到堆腐败弹出对话框。

+0

你应该更具体:你使用哪个库和哪个函数? – holgac 2012-07-24 18:17:13

+1

有几个选项可供您使用,具体取决于您的代码是什么样的。如果你直接分配和修改堆空间,那么你可以在一个指针中的调试器中设置一个监视点,并试着看看你的一些操作是否在执行它们不应该执行的操作,比如超出缓冲区。 – AlcoJaguar 2012-07-24 18:32:38

+0

@AlcoJaguar我打电话malloc和免费(平台是Windows XP)。你的意思是把手表放在所有的指针上? – likejiujitsu 2012-07-25 18:55:13

回答