我正在追逐内存堆损坏错误。我所拥有的是据称在释放后被修改的内存地址。 Windows主要做了触发退出一个断点,我在输出窗口中看到错误消息如下:Visual Studio(VC++ 2005)调试内存
HEAP[myprogram.exe]: HEAP: Free Heap block df56c20 modified at df56c80 after it was freed
我的问题是在准确点当Windows触发断点,我可以追溯到在我的代码点对应与这个地址相关的数据?这至少有助于调试。感谢关于如何做到这一点的任何想法。我读http://msdn.microsoft.com/en-us/library/s3aw423e.aspx,但是我怎么能够做我想做的事情并不十分清楚。谢谢!
感谢@Luchian:我只是试过,但到那时,代码似乎是Windows库ntdll.dll没有调用堆栈返回到我的应用程序,问题是这个地址不是每次运行修复;所以我不知道它的先验十六进制表示。如果我知道先验,我甚至会在开始调试之前就开始使用它。有什么建议么? –
@ squashed.bugaboo删除代码,直到您不再受到损坏。这应该缩小它的范围。 –
谢谢@Luchian:好的。我明白了,所以你基本上是在暗示(我推迟了什么),以恢复到没有错误的代码的工作版本。我说的是对的吗? –