根据 C++03 标准,5.3.4/10
对于 char 和 unsigned char 数组,new-expression 的结果与分配函数返回的地址之间的差应是任何大小不大于正在创建的数组的大小。
分配函数 ( operator new[]()
) 也需要为任何可能的类型分配对齐的内存。因此,引用的部分有效地表示new char[sizeof(T)]
应该产生与 type 正确对齐的内存T
。
这个要求的目的是什么?我可以只调用operator new()
(or operator new[]()
) 来保证返回正确对齐的内存并拥有正确对齐的内存。我的意思是无论如何new char[]
都会打电话operator new()[]
,所以我可以自己打电话。
引用要求的目的是什么?为什么不直接打电话operator new[]()
呢?