【C/C++语言系列】C语言的malloc、free和C++的new、delete异同

1.malloc和new的用法:

malloc:

Person* person = (Person*) malloc(sizeof(Person));
if(person == NULL) {
	return 0;
}
person -> Init();  //构造函数

new:

Person* person = new Person();

可以看出C++的new操作符包含了malloc的长度计算类型转换安全检测

2.malloc、free和new、delete的区别?

  1. malloc、free时库函数、new、delete是运算符
  2. 返回值不同:malloc返回void*,需要自己强转;new返回对应的指针
  3. malloc需要计算内存大小;new不需要
  4. 安全性检查
  5. malloc不会调用构造函数;new会调用构造函数
  6. free不会调用析构函数;delete会调用析构函数

3.free和delete怎么知道要释放多少字节的内存?

这里简单说下:malloc、calloc、realloc函数申请的内存会多申请一个称为头部指针的地方保存一些额外的信息(如字节长度),可以参考free函数如何知道要释放多大空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值