检测堆损坏

Detect heap corruption

本文关键字:损坏 检测      更新时间:2023-10-16

Visual Studio 2008 是否有任何选项(运行时)来检测堆损坏的即时检测?

如果浏览从 Visual C++ 调试运行时导出的调试例程列表,可以找到许多有用的调试函数,包括可用于设置调试堆检查自身是否损坏的频率的_CrtSetDbgFlags函数。

来自 Microsoft 的应用程序验证器是实现此目的的绝佳工具。我发现它非常有用。下载它 :

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

然后四处寻找一些教程。通常只需指向可执行文件,然后像往常一样在Visual Studio调试中运行exe。它应该在问题发生的位置附近中断。

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