我可以将重载'new'运算符与原始'new '一起使用吗?

Could I use the Overloaded 'new' operator with original 'new ' together?

本文关键字:new 一起 运算符 重载 我可以 原始      更新时间:2024-05-09

我编写了一个cpp,如下所示,以重载新的运算符。

void* operator new(size_t size)
{
//return malloc(size);
return MemoryMgr::Instance().allocMem(size); 
}

void operator delete(void* p)
{
MemoryMgr::Instance().freeMem(p);
}
void* operator new[](size_t size)
{
return MemoryMgr::Instance().allocMem(size);
}

void operator delete[](void* p)
{
MemoryMgr::Instance().freeMem(p);
}

void* mem_alloc(size_t size)
{
return MemoryMgr::Instance().allocMem(size);
}
void mem_free(void* p)
{
free(p);
}

然而,在主要功能中,有时我想使用原始的新功能。但是计算机总是调用重载的new。然后我尝试了::new。但这没有道理。哪种方式可以同时使用重载的new和原始new?将void*运算符new放入需要重载new函数的专用类中?

覆盖全局运算符newdelete是一个全胜游戏。不能在同一程序中同时使用替代和原始程序。