【C++】malloc/free 和 new/delete 的区别

共同点:

malloc 和 new 都是需要在堆上申请空间,且最后需要释放掉,new 只是在 malloc 的基础上初始化了。

不同点:

1、malloc 和 free 都是函数,而 new 、delete 是类的操作符;

2、malloc 申请空间后需要手动初始化,而 new 不用;

3、malloc 需要手动计算申请空间的大小,而 new 只用 类型+[大小]即可;

4、malloc 在申请时是 void* 类型,需要强转,new + 类型;

5、malloc 空间申请失败时返回 NULL,需要 if 判空一下,new 申请失败不需要判空,但是需要捕获异常;

6、申请自定义类型对象时,malloc 和 free 不会调用构造函数和析构函数,new、delete 会自动对自定义类型对象调用构造函数初始化,再析构释放掉,指向 nullptr;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值