我有一个内存泄漏,我正在尝试在我的 mfc 程序中查找它。通常我会做类似以下的事情:
头文件
// Leak Detection
#if defined(WIN32) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#endif
cpp file
// Leak detection
#if defined(WIN32) && defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
#ifdef DEBUG_NEW
#undef DEBUG_NEW
#endif
#define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )
#define new DEBUG_NEW
#endif
这种技术在大多数文件中效果很好,但是当我将其包含在某些文件(例如我的文档)中时,我收到错误: error C2661: 'CObject::operator new' : no overrided function gets 4arguments
这里有什么解决办法呢?我应该在某个地方#undef-ing 新的东西吗?
Thanks!
我还使用与您相同的功能来进行泄漏检测。
您可以注释掉或删除 DEBUG_NEW 定义块,假设您不再需要它来捕获内存泄漏。或者,如果您仍然需要它,请保持原样并使用
#ifdef _DEBUG
#undef new
CMyOject* pMyObjectInst = new CMyObject();
#define new DBG_NEW
#endif
因此,您可以在对象创建之前取消定义 new(请参阅错误列表中的行号),然后立即重新定义它,以便在该对象创建之后发生的任何内存泄漏仍然可以识别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)