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。
Posted on   michalegao  阅读(361)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示