c++中的placement new操作符学习

参考文献:http://blog.csdn.net/zhangxinrun/article/details/5940019

new操作符:

例子如下:int * pint=new int(23);它先在堆上分配内存空间;接着初始化这个内存空间;最后返回此指针。

对于此操作是可以重载的,记住是只能在类中被重载,得到了一个重载版本为placement new (旧版本是operator new),原型如下void *operator new( size_t, void *p ) throw()  { return p; },应用:MyClass * pClass=new(p) int(23);形式上和原版是不同的,它的功能只是实现已有内存的指针p上进行构造一个int的对象。

比较:

显然此处少去了内存空间分配过程,节约了内存搜索的过程了;至于内存的申请之类的可以有其他函数来完成,比如就用以前的new,而只是在它空间上进行重新指定,而不需要销毁,再次重新分配。

 

注意:

此处内存可以在堆中,当然也可以在栈中;此处是new,对于new[] ,delete ,delete[]都类似的处理。

posted @ 2014-12-02 16:28  miner007  阅读(170)  评论(0编辑  收藏  举报