找出堆内存损坏的位置

Ani*_*753 8 c++ windows

我知道已经存在许多类似的问题和答案,但我无法解决我的问题.

在我的大应用程序中,堆在某处被破坏,我无法找到它.我也使用像gflags这样的工具,但没有运气.

我在下面的示例中尝试了gflags,它会破坏堆的目的:

char* pBuffer = new char[256];
memset(pBuffer, 0, 256 + 1);
delete[] pBuffer;
Run Code Online (Sandbox Code Playgroud)

第2行堆被覆盖但是如何通过gflags,windbg等工具找到它.可能我没有正确使用gflags.

小智 1

如果同一个变量持续被损坏,数据断点是一种快速而简单的方法来查找负责更改的代码(如果您的 IDE 支持它们)。(在 MS Visual Studio 2008 中调试 -> 新断点 -> 新数据断点...)。如果您的堆损坏更加随机,它们将无济于事(但我想我会分享简单的答案,以防有帮助)。