在写服务器程序的时候,经常会用到内存池,很多是在堆(heap)上预分配一大块内存,用空闲链表的方式来实现内存的分配与回收。
在业务应用的时候,如果想用这预分配的内存来创建对象,就不能用通常的new了,而需要用到placement new构造,它可以构造对象到给出的内存上。
placement new的原型如下:
void *operator new( size_t, void *p ) throw() { return p; }
大概的使用流程类似下面的步骤: