数组放置-新需要缓冲区中未指定的开销?
5.3.4 [expr.new]
new(2,f) T[5]
结果是 operator new[](sizeof(T)*5+y,2,f)
.
这里,x和y是表示数组分配开销的非负的未指定值; 新表达式返回的值将由此金额抵消。 operator new[]
..此开销可应用于所有数组中。 新表达式,包括引用库函数的那些 operator new[](std::size_t, void*)
以及其他职位分配功能。开销的大小可能因新调用而异。 -最终例子]
void* buffer = malloc(sizeof(std::string) * 10);std::string* p = ::new (buffer) std::string[10];
new (buffer) std::string[10]
operator new[](sizeof(std::string) * 10 + y, buffer)
std::string
y > 0
void* buffer = malloc(sizeof(std::string) * 10 + how_much_additional_space);std::string* p = ::new (buffer) std::string[10];
y == 0
此开销可应用于所有数组中。 新表达式,包括引用库函数的那些 operator new[](std::size_t, void*)
以及其他职位分配功能。
尚方宝剑之说
叮当猫咪
相关分类