在预先定义的内存位置构造一个对象
赵湘宁
char * buff = new char [sizeof (Foo) ];
#include <new> Foo * pfoo = new (buff) Foo; //使用new操作在buff上构造一个 Foo
unsigned int length = pfoo->size(); pfoo->resize(100, 200); length = pfoo->size();
pfoo->~Foo(); //显式调用析构函数
#include <new> void placement_demo() { //1. 预分配缓冲 char * buff = new char [sizeof (Foo) ]; //2. 使用 placement new Foo * pfoo = new (buff) Foo; //使用对象 unsigned int length = pfoo->size(); pfoo->resize(100, 200); //3. 显式调用析构函数 pfoo->~Foo(); //4. 释放预定义的缓冲 delete [] buff; }