【发布时间】: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