因为原先自己写过一套可以检测 memory leak/overflow 的内存分配模块,觉得不错
但用在MFC工程的时候, 发现不能重载全局的operator new...
link的出现如下错误Linking...
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in gditest.obj
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in gditest.obj
../../bin/gditest.exe : fatal error LNK1169: one or more multiply defined symbols found
怎么让系统不链上MFC的operator new的实现, 而是忽略用我的?vs2003的工程如何设置?
但用在MFC工程的时候, 发现不能重载全局的operator new...
link的出现如下错误Linking...
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in gditest.obj
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in gditest.obj
../../bin/gditest.exe : fatal error LNK1169: one or more multiply defined symbols found
怎么让系统不链上MFC的operator new的实现, 而是忽略用我的?vs2003的工程如何设置?
#define new DEBUG_NEW
#endif#define DEBUG_NEW new(__FILE__, __LINE__)
大概是这个样子其中那个 #define new DEBUG_NEW 我已经被注释掉了。问题是:
mfc 的 lib 中, 有一套
void* operator new(size_t);
void* operator new(size_t, const char*, int);
的实现我的代码里面也有一份实现
我想最终link到我的代码的export symbols中去,
而不是afxmem.obj里面的。
如果屏蔽某个系统的symbol, 我记得原来有人搞过,
d但不记得怎么用的。
#undef new
#endif