您的位置:首页 > 编程语言 > C语言/C++

c++ 各种不同含义的new和delete

2018-01-21 21:06 573 查看
new操作符(new operator)堆对象; new操作(operator new)

***************************************************************************************

当你使用 string *ps = new string (“hello linux”);你使用的是new操作符;它好比sizeof一样是内置的

它的功能一是分配足够的内存容纳所需类型的对象;二是调用构造函数初始化内存中的对象。

****************************************************************************************

new操作符是调用函数来完成内存分配,咱们可以重载函数改变行为,new操作符为分配内存调用的函数名字

是new操作(operator new): void * ps =operator new(sizeof(string));它返回的是一个指针,指向开辟的

对象内存。类似于malloc,operator new职责是分配内存。但是它对构造函数一无所知!

**********************************************************************************************

placement new

一个特使的operator new:palcement new;

有时候有一些已经被分配但是尚未处理的raw内存,需要在这些内存中构造一个对象,可以使用placement new;

eg:

class A

{

public:

widget(int widegetsize); 

...

};

wideget *constructwidgetinbuffer(void *buffer,int widgetsize)

{ returnnew (buffer)widget(widgetsize);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: