2 hchchc6016 hchchc6016 于 2016.04.13 20:59 提问

c++中关于new操作符的一些疑问

这个是上课时候的PPT,求大神讲一讲中间一段代码什么意思,他想说明什么图片

4个回答

VisualEleven
VisualEleven   Ds   Rxr 2016.04.14 16:43
已采纳

placement new

3.1 有时候你真的会想直接调用一个构造函数,针对一个已经存在的对象调用其构造函数,并无意义,因为构造函数用来对象初始化,而对象只能初始化一次。但是你偶尔会有一些分配好的原始内存,你需要在上面构建对象,有一个特殊的地方 operator new 称为placement new,允许这么做。

例如:

class Widget { public: Widget(int widgetSize); ...... };

Widget* constructWidgetInBuffer(void*buffer,int size) { return new (buffer) Widget(size); }

此函数返回指针,指向一个Widget object,它被构造于传递给此函数的一块内存缓存区上。当程序运行到共享内存或者内存I/O映射。这类函数可能是有用的,因为在那样运用中,对象必须置于特定的地址,或者置于特殊函数分配出来的内存上。

CSDNXIAOD
CSDNXIAOD   2016.04.13 21:03

new操作符
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

mearsedy
mearsedy   2016.04.13 21:21

第二行是用buffer指向了 s 的首地址
第三行是创建一个string对象,对象中的属性值是“Hi”放入buffer所指地址处。

beifengche
beifengche   2016.04.14 15:57

讲的是new 可以使用栈上的内存,而不是在堆上。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!