定位new

定位new (placement new express): 允许将新对象创建在已分配好的内存中。

表达式为

new(place_address) type_specifier //place_address必须是一个指针
 
example:
class Foo{
int n;
};
 
void main()
{
//预分配内存
char * buf = new char[sizeof(Foo)*10];
 
Foo *p1 = new(buf)Foo;
Foo *p2 = new(buf+sizeof(Foo))Foo;
Foo *p3 = new(buf+sizeof(Foo)*2)Foo;
 
delete[] buf;//不需delete p1, p2, p3 因为没有为它分配内存
}



 

你可能感兴趣的:(定位new)