如何在c ++中剖析和捕获双重删除和内存损坏

时间:2010-05-12 20:34:29

标签: c++ exception profiling free

我有使用c ++在Windows 7上使用VS 2008编译的应用程序 我得到了异常我试图抓住这个我创建的pdb文件(因为我在发布中编译)。并看到堆栈的一部分,但它没有给我提示错误的位置。 我正在寻找免费的方法来解决这个错误。你可以通过免费的方式来推荐吗?

1 个答案:

答案 0 :(得分:4)

Visual C ++内置了非常好的C运行时内存调试工具。

请参阅#define _CRTDBG_MAP_ALLOC,或阅读:The CRT Debug HeapMemory Leak Detection Enabling

它可以检测到:

  • 内存泄漏
  • Double删除
  • 刚刚写完已分配内存的末尾

如果你有一个可重现的案例,问题分配总是在同一时间发生,你可以使用它来设置它进入该分配的调试器。

还有商业工具,如BoundsChecker,HeapAgent和Purify,以及像Fortify这样的免费工具,当然你也可以自己动手,但是你可以通过内置的VisualStudio获得很长的一段时间。