new/delete和malloc/free的区别

malloc/free和new/delete的区别

共同点

都是从堆上申请空间,并且需要用户手动释放。

不同点

1、malloc/free是函数,new/delete是操作符。

2、malloc需要用户区手动计算空间的大小,new直接再后面跟上空间的类型就好。

3、malloc返回的是void*指针,需要用户根据需要转换,new返回的是类型指针。

4、malloc/free只是开辟所需的空间,不会调用类类型中的构造函数和析构函数,new会会调用构造函数对对象进行初始化,delete再释放空间的时候会调用析构函数对空间中的资源惊醒清理。

5、malloc申请空间失败返回的是NULL,new申请失败会抛出一个bad alloc类型的异常。

6、malloc不会对申请的空间进行初始化,new可以对申请的空间进行初始化。

7、new/delete比malloc/free的效率低一点,因为他底层封装的是malloc/free。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值