malloc、free 和 new、delete 的区别


一、从定义

malloc、free是C中的库函数
new、delete 是C++当中的操作符

注:操作符可以被重载

二、从使用方式

new 自动计算所需分配内存;malloc 需要手动计算所需分配内存

new 返回值是对象类型的指针;malloc 返回的是void*,需要转换为所需类型

delete 释放内存时需要对象类型的指针;free是void*类型指针

new 分配失败会抛出异常;malloc 分配失败会返回NULL

new 是在free store上分配内存;malloc 在堆上分配内存

new 先调用 operator new,申请足够的内存,然后调用该类型的构造函数,初始化成员变量,最后返回对象类型指针;delete先调用析构函数,调用 operator delete函数释放内存

delete、free调用后,内存不会立即释放,指针也不会指向空,为了避免野指针,释放内存后,应该把指针指向null


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值