检测堆损坏

时间:2011-05-07 15:03:43

标签: c++ visual-c++ memory-management windbg

visual studio 2008是否有任何选项(运行时)来检测堆损坏的immedidate检测?

3 个答案:

答案 0 :(得分:2)

如果查看从Visual C ++调试运行时导出的Debug Routines列表,可以找到许多有用的调试函数,包括_CrtSetDbgFlags,可用于设置调试堆检查自身的频率腐败。

答案 1 :(得分:1)

Microsoft的Application Verifier是用于此目的的出色工具。我发现它非常有用。下载它:

http://www.microsoft.com/en-us/download/details.aspx?id=20028

然后四处寻找一些教程。通常只指向您的可执行文件,然后像往常一样在Visual Studio调试中运行您的exe。它应该在问题出现的地方附近破裂。

答案 2 :(得分:0)

您可以使用应用程序的发布版本在任何窗口上激活“完整页面堆”(至少从Windows 2000开始!)。 它会在发生时捕获99%的错误。 您可以查看此page以获取此功能的教程。 完成对应用程序的故障排除后,不要忘记停用整页堆。 此技术可能无法在调试版本上运行,因为CRT的调试版本使用自己的方案来分配动态内存。