错误C2661:'CObject的:: operator新:没有重载函数有4个参数(erro

2019-09-17 22:53发布

我有我试图追捕我的MFC程序内存泄漏。 通常,我会做一些像下面这样:

头文件

// Leak Detection
#if defined(WIN32) && defined(_DEBUG)
     #define _CRTDBG_MAP_ALLOC
     #include <stdlib.h>
     #include <crtdbg.h>
#endif

CPP文件

// 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

该技术适用于大多数的文件,但是当我将其包含在一些文件,如我的文档,我得到的错误:错误C2661:'CObject的:: operator新:没有重载函数有4个参数

这里有什么解决办法? 我应该是#民主基金,荷兰国际集团新的地方或什么?

谢谢!

Answer 1:

我也使用相同的功能,你的泄漏检测的目的。

要么你可以注释掉或删除DEBUG_NEW定义块,假设你不需要它诱捕内存泄漏了。 或者,如果你仍然需要它,离开它,因为它是和使用

#ifdef _DEBUG
#undef new
    CMyOject* pMyObjectInst = new CMyObject();
#define new DBG_NEW
#endif  

所以,你取消定义新之前创建对象(见行号在你的错误列表)和后立即再次重新定义,使得该对象创建之后发生的任何内存泄漏仍然是可识别的。



Answer 2:

我有致把类似的问题#define new DEBUG_NEW#include ...在.cpp文件语句。 更改为了解决我的问题。



文章来源: error C2661: 'CObject::operator new' : no overloaded function takes 4 arguments