c++中placement new

c++中的placement new是::operator new的重载版本,用于在已经分配好的内存上创建对象。这样就可以在用户空间对内存进行操作,减少了对象生成的成本,控制对象的地址从而减少内存碎片,对象池估计也是这么搞的吧。

class A{
public:
    A(){
        cout<<"A"<<endl;
    }
    ~A(){
        cout<<"~A"<<endl;
    }
};
int main()
{
    void* t=malloc(sizeof(char)*100);
    A* a=new (t)A();
    delete a;
}

函数原型:void *operator new( size_t, void *p ) throw()  { return p; }

上面调用后为: oerator new(sizeof(A),a)。

 

最近看netty的源码,buffer竟然使用jemalloc的东西,看来要花点时间把这块给啃下来

 

posted @ 2015-01-26 23:33  高兴的博客  阅读(212)  评论(0编辑  收藏  举报