码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-02 17:02:44      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   art   log   ef   as   size   tt   

参考文献: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[]都类似的处理。

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

标签:blog   http   ar   art   log   ef   as   size   tt   

原文地址:http://www.cnblogs.com/miner007/p/4137825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!