Operator new allocates memory from the heap, on which an object is
constructed. Standard C++ also supports placement new operator, which
constructs an object on a pre-allocated buffer. This is useful when
building a memory pool, a garbage collector or simply when performance
and exception safety are paramount (there's no danger of allocation
failure since the memory has already been allocated, and constructing
an object on a pre-allocated buffer takes less time):
void placement() {
char *buf = new char[1000]; //pre-allocated buffer
string *p = new (buf) string("hi"); //placement new
string *q = new string("hi"); //ordinary heap allocation
cout<
<
c_str()
<
<c_str();
}
:
placement new 表達式只是定位,不存在與其相對應的delete,如果delete則選擇
delete[] buf。
文章來源:
http://www.cnblogs.com/michael-gao/archive/2008/06/05/1214239.html