我可以将重载'new'运算符与原始'new '一起使用吗?
Could I use the Overloaded 'new' operator with original 'new ' together?
我编写了一个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函数的专用类中?
覆盖全局运算符new
和delete
是一个全胜游戏。不能在同一程序中同时使用替代和原始程序。
相关文章:
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 重载运算符new[]的行为取决于析构函数
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 过载'operator new'如何导致无限循环?
- 在将 new 与指针一起使用时,创建数组的指定长度
- 如何将"new"公共项目对话框与 wxwidget 一起使用?
- 如何使用 new 和 delete 与 OpenGL 的缓冲区对象一起使用?
- 将运算符new和运算符delete与自定义内存池/分配器一起使用
- 将 new 运算符与对象的非默认构造函数一起使用