繁体   English   中英

Visual Studio(VC ++ 2005)调试内存

[英]Visual Studio (VC++ 2005) Debugging memory

我正在追寻内存堆损坏错误。 我所拥有的只是据称在释放后已修改的内存地址。 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,但还不清楚我如何去做自己想做的事情。 谢谢!

您可以在内存地址处设置断点。 只需转到断点窗口并添加一个新的数据断点即可。 如果您发现每次运行在同一地址发生损坏,这将有所帮助。

但是,对于像这样的问题,问题很可能在其他地方。 常见原因来自不确定的行为。 寻找:

  • 双重删除
  • 不从函数返回
  • 在数组中越界
  • 写你不拥有的记忆

使用应用程序验证程序并启用PageHeap。 一旦内存损坏,它将立即进入调试器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM