- C++语句:string *pStr = new String;
- 由编译器产生的new operator的近似代码:
- {
- void *memory = operator new(sizeof(string));
- // 然后在memory所代码的内存块上调用string类相应的构造函数
- // 这里要注意的是:所谓的构造函数是由编译器自动调用的,程序
- // 员并没有直接调用构造函数的权利
- string *ps = static_cast<string*> (memory);
- }
- C++规定new operator所执行的内容不容许更改,即不允许对该操作符进行重载,
- 只允许程序员对operator new操作符进行重载和编写自己的构造函数来间接影响
- new operator具体行为的方式.
- operator new的功能类似与C语言中的malloc函数,都只用于分配未经初始化的内存,
- 其相应的内存释放函数由operator delete提供,而所谓的placment new只不过是
- operator new的一个重载操作符而已,并仅仅只是直接返回传递进行的已分配好的内
- 存指针,由对应的placement delete对其转送的内存进行释放.
- 总之new operator的具体执行内容为:
- 1.分配内存
- 2.在该内存上调用相应的构造函数以初始化该内存
- 3.对指针进行转型并返回
- delete operator的具体执行内容为
- 1.调用相应的析构函数
- 2.释放内存
new operator和delete operator
最新推荐文章于 2022-07-24 21:32:02 发布