为了在我的调试树上收集内存泄漏,我已添加:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
但是我在最后一行得到了编译错误:
void* AA::rpyCreateObject(void* addrs)
{
if (addrs == NULL)
return new AA;
else
return new(addrs) AA; // error C2061: syntax error : identifier 'addrs'
}
我希望这段代码的作用是:第一个是DEBUG_NEW,第二个是常规新的。 注意 - 我不能使用#undef new,因为这个函数实际上是一个宏:
#define ObjGenMacro(ClsName) void* ClsName::rpyCreateObject(void* addrs) { \
if (addrs == NULL) \
return new ClsName; \
else \
return new(addrs) ClsName; \
}
如何做到这一点?