【问题标题】:C++ Memory Debugger?C++ 内存调试器?
【发布时间】:2011-09-13 06:05:55
【问题描述】:

谁能推荐一款适用于 Windows 的优质 C++ 内存调试 API 或软件(特别是与 MinGW 一起使用的软件)?我几乎可以肯定我的程序中存在内存泄漏,但我不知道从哪里开始查找。

另外,在相关说明中,我之前尝试过自己重载全局 new 和 delete 运算符,并从那里存储调试信息。然而,当我尝试用重载的运算符替换每次出现的 new 时,它会引发一堆错误。我只尝试使用一个简单的预处理器宏来做到这一点。

#define new new(__FILE__, __LINE__)

有什么独特的方法可以解决这个问题吗?

编辑:我可能应该更清楚这一点。事实上,我确实声明了一个重载,并在没有任何错误的情况下实现了它。唯一的问题是当我尝试使用宏来替换所有使用 new 运算符来使用我的重载时,这就是我只发布宏代码的原因。

【问题讨论】:

  • 当然你的宏会抛出错误。没有采用这些参数的 operator new 重载。定义宏不只是为您创建一个适用的函数。
  • 我不想听起来居高临下,但宏为一个愚蠢的错误开辟了道路:您的new 是否在宏出现之前定义?为什么不完全忽略这一点并定义全局new(没有参数的那个),进行日志记录并从中获取内存。 operator new?
  • @Luc,不。我确保在宏之前添加我的重载声明。虽然,我可能会尝试重载常规全局。

标签: c++ windows memory debugging


【解决方案1】:

对于 Windows 中的内存泄漏,我发现启用用户模式堆栈跟踪的 UMDH 非常有用。 Here's a tutorial.

有关其他工具的列表,请查看here

【讨论】:

  • 这似乎是我正在寻找的,谢谢。希望它能帮助我发现泄漏的来源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2014-01-21
  • 2010-10-21
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多