重载全局new和类的new发生冲突的问题
lsgt 2011-07-27 11:13:40 1 为了检测内存泄漏,重载了DEBUG模式下的全局new:
#define new new(__FILE__,__LINE__)
2 为了使类从内存池中分配内存,且希望其构造函数被调用,因此重载该类的new:
class CA
{
...
static void* operator new(size_t t);
static void operator delete(void* p);
};
这样的话,将造成编译的时候冲突。为解决此问题:
#ifdef new
#undef new
static void* operator new(size_t t);
static void operator delete(void* p);
#endif
可以编译通过,但在DEBUG模式下就检测不到内存泄漏了。
-----------------------------------------------------
有没有好的办法,既可以在DEBUG模式下重载全局new以检测内存泄漏,又可以重载某个类的new以保证从内存池内分配?