【发布时间】:2011-11-17 22:54:03
【问题描述】:
我写了一个简单的函数如下:
void *operator new(size_t size) throw(std::bad_alloc)
{
void *p;
p = malloc(size);
if(!p)
throw bad_alloc();
return p;
}
我还能做些什么来改善这一点? malloc 会比 new 更有效吗?如果我想写new[] 是否只需要更改函数签名?
【问题讨论】:
-
你为什么还要覆盖
operator new?这是一个非常专用的工具,如果您有这些基本问题,那么它不适合您。 -
@user974191 - 完全正确 - 你重载 new 有什么意义?你想达到什么目的?
-
@CatPlusPlus:请赐教特殊用途。所以我可以停止使用它。我不知道我为什么要这样做。
-
@user974191:你弄错了。
::operator new()是始终按照malloc()实现。也许您对::operator new()和C++new表达式 之间的区别感到困惑? -
对我来说,您似乎正在尝试“创建”新运算符,就像它根本没有在 C++ 中定义一样。以防万一,您无需重载即可使用它。
标签: c++ operator-overloading new-operator