【发布时间】:2015-04-02 12:30:24
【问题描述】:
为new 和new[] 分别重载命名为operator new 和operator new[] 的原因是什么?由于它们都只用于分配一定数量的内存 - 为什么我要为它们各自编写不同的代码?
【问题讨论】:
-
new[]还会在实际存储数组之前存储数组大小 -
例如,您想为小对象创建一个内存池。而且您的池不支持分配对象数组。所以你保留
operator new[]默认。 -
他们希望通过不需要在某处存储分配的大小,让实现有机会优化单个对象的分配。
-
我认为这只需要在释放时调用适当数量的析构函数。但这不是隐式完成的吗?
-
delete[]告诉实现它应该查看要销毁的对象的数量。但如果使用new,则可能不会存储此信息。
标签: c++ new-operator c++14 iso