【发布时间】:2013-05-16 08:35:25
【问题描述】:
根据 C++03 标准,5.3.4/10
对于 char 和 unsigned char 数组,new-expression 的结果与分配函数返回的地址之间的差应是任何大小为的对象类型的最严格对齐要求 (3.9) 的整数倍不大于正在创建的数组的大小。
分配函数 (operator new[]()) 也需要为任何可能的类型分配对齐的内存。所以引用的部分有效地表明new char[sizeof(T)] 应该产生与T 类型正确对齐的内存。
这个要求的目的是什么?我可以只调用operator new()(或operator new[]()),它保证返回正确对齐的内存并具有正确对齐的内存。我的意思是无论如何new char[] 会调用operator new()[] 所以我可以自己调用它。
引用要求的目的是什么?为什么不直接打电话给operator new[]()?
【问题讨论】:
标签: c++ memory-management