placement new

weixin_33924312發表於2017-05-11

operator new和new,前者是記憶體分配的方式可以被過載,後者呼叫過程中實際執行了很多動作(利用operator new分配記憶體,呼叫構造,返回指標)。

placement new (定位放置new),是利用一個operator new的一個重灌版本進行記憶體分配(即不進行記憶體分配,直接返回指定的地址)的new ,其作用:在指定的記憶體位置建立一個物件並呼叫其建構函式,指定記憶體位置需先分配好,適合需要在同一個位置多次呼叫構造,重複使用記憶體的場景。析構時需顯示的呼叫物件的解構函式,記憶體保留以便重新使用。

void *operator new( size_t, void *p ) throw()  { return p; }

使用方式

MyClass * pClass=new(buf) MyClass;

相關文章