operator new和 new operator的区别(More Effective C++_8(运算符))

一、分析区别


首先,我们先对new和delete表达式有深入了解,先看下面的语句

string *sp=new string("hello");

上述代码,实际上发生了三个步骤,第一步,调用名为operator new 的标准库函数,分配足够大的原始化的未类型化的内存,来保存指定类型的一个对象;第二步,运行该类型的一个构造函数,用于初始化构造对象;最后,返回指向新分配并设定了处置的指针;

上述,代码中的new,其实就是所谓的new operator操作,这个操作符是由语言内建的,不能改变意义,它的动作就分为上面三步:分配原始内存,初始化,返回指针;

再看

delete sp;

上述语句实际上有两步,第一步,对sp所指的对象调用适当的析构函数;第二步,调用名为operator delete的标准库函数释放该对象所用的内存;即delete sp,就相当于delete operator,它的动作分为以下两步:调用析构函

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值