我正在处理内存堆损坏错误。我所拥有的只是据称在释放后被修改的内存地址。 Windows 基本上在退出时触发断点,我在输出窗口中看到如下错误消息:
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但我并不清楚我怎样才能去做我想做的事。谢谢!
最佳答案
可以在内存地址设置断点。只需转到断点窗口并添加一个新的数据断点。如果您看到每次运行都在同一地址发生损坏,这会有所帮助。
但是对于这样的问题,问题很可能出在其他地方。常见原因来自未定义的行为。寻找:
- 双重删除
- 不从函数返回
- 越界
- 写入不属于你的内存
关于c++ - Visual Studio (VC++ 2005) 调试内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059056/