3

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

HEAP [unit_test.exe]:堆在 35c70 附近的已提交范围内缺少最后一个条目 Windows 已触发 unit_test.exe 中的断点。

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

这也可能是由于用户在 unit_test.exe 获得焦点时按 F12。

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

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

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

4

1 回答 1

4

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

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

于 2012-08-02T18:38:02.020 回答