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

标签 c++ windows memory-management memory-leaks visual-studio-2005

我正在处理内存堆损坏错误。我所拥有的只是据称在释放后被修改的内存地址。 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/

相关文章:

c++ - 带两个参数的 decltype 是什么?

c++ - 避免调用默认、移动和复制构造函数

arrays - 为什么是 &array != &array[0]?

C++克隆并创建以充当虚拟构造函数?

c++ - 如何在 vc++ 6 中使用 mfc 标记选中的菜单项?

c++ - 从 uint32_t 转换为 wchar_t 并存储在 wstring 中时发生访问冲突

python - 获取 python module.pyd 的版本

c# - 在 C# 中将 key 写入 Windows 注册表

c - 一个直接、简单的 api 作为系统运行?

c++ - 在使用Builder Pattern的构造函数中将指针类型的成员数据初始化为NULL