歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中的placement new

C++中的placement new

日期:2017/3/1 10:25:49   编辑:Linux編程

在寫服務器程序的時候,經常會用到內存池,很多是在堆(heap)上預分配一大塊內存,用空閒鏈表的方式來實現內存的分配與回收。

在業務應用的時候,如果想用這預分配的內存來創建對象,就不能用通常的new了,而需要用到placement new構造,它可以構造對象到給出的內存上。

placement new的原型如下:

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

大概的使用流程類似下面的步驟:

  1. class A
  2. {
  3. ……
  4. };
  5. void* mem = pMemPoll->alloc(); //從內存池預分配的內存
  6. A* a = new(mem)A;
  7. ……
  8. a->~A(); //注意,對象回收時,需要顯式調用析構函數
Copyright © Linux教程網 All Rights Reserved