new和malloc的区别及malloc详解

本文主要介绍了new和malloc的区别。两者共同点是开辟的空间都在堆上且需手动释放。不同点包括:malloc是函数,new是操作符;malloc不初始化空间,new可初始化;malloc需手动计算空间大小,new只需声明类型等。此外,new效率相对较低,其底层封装了malloc。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.new和malloc的区别

共同点:两者开的空间都存放在堆上,并且都需要手动释放
不同点:

  • 在含义上:
    1.malloc是一个函数,new是一个操作符。
  • 初始化方面:
    2.malloc申请的空间不会初始化,new可以初始化空间。
  • 开辟空间方面:
    3.malloc需要手动计算空间大小并传递,而new只需要声明空间是什么类型就好。
  • 返回类型方面:
    4.malloc返回的类型是void*,必要的时候需要强制转换,而new不需要,因为new后跟的是空间类型
  • 申请失败的情况方面:
    5.malloc申请失败时,返回的是空,因此需要严格判空。new需要捕捉异常。
  • 申请自定义对象:
    6.在申请自定义空间的时候,malloc只会开辟空间,而new在开辟空间的同时,会调用自定义对象的构造函数来完成初始化
  • 效率方面:
    7.new相对malloc效率要低,因为new的底层封装了malloc。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值