众所周知,C++标准定义了两种形式的全局分配函数:
void* operator new(size_t);
void* operator new[](size_t);
此外,C++草案标准(18.6.1.2 n3797)称:
227)operator new或operator delete直接不需要记录数组的重复次数或元素大小。这些操作在数组new和delete表达式中完成。但是,数组new表达式可以增加size参数以获取存储补充信息的空间。
我困惑的是:
如果我们从标准中删除void* operator new[](size_t);
,只使用void* operator new(size_t)
,那该怎么办?为什么要定义冗余的全局分配函数?
operator new
和operator new[]
都会调用malloc
函数。 - Mike DeSimone增加operator new的size参数以获取存储补充信息的空间
,尽管没有提到这一点。 - Keithnew[]
表达式,因为标准规定了增加的位置 - 我只是想说非数组等效物是不允许这样做的。如果你想推测它可能发生在其他地方,那很好但是不同。 - Tony Delroy