7.1.14 new/delete与malloc/free的区别

new/delete是C++运算符,malloc/free是<stdlib.h>中的库函数。由于C++中经常调用C函数,故保留了malloc/free;

主要区别表现在:

1.new可以自动计算所需空间,而malloc手动计算。 int*p=new int[5]; int*p=malloc(2*sizeof(int));

2.new返回具体类型指针,malloc返回void类型指针。

3.由于malloc返回void类型指针,如果没经过强制转换,在编译期间不会报错(申请int,用float*保存之类的错误)。

4.new操作可以重载,可以自定义内存分配策略。

5.new调用构造函数,delete调用析构函数。malloc/free不行。

6.new不需要头文件,只是运算符。


delete和free后内存并没有立即收回,内存内容还没更改,只是告诉操作系统,此块内存被释放了,可做他用。

因此,释放完内存后一定要把指针置为NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值