使用原始的'new'运算符而不是DEBUG_NEW

时间:2014-01-15 13:39:20

标签: c++ debugging memory-leaks

为了在我的调试树上收集内存泄漏,我已添加:

#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; \
    } 

如何做到这一点?

0 个答案:

没有答案