歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++中的placement new

在寫服務器程序的時候,經常會用到內存池,很多是在堆(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