new与malloc的区别

本文详细介绍了C++中malloc和new的区别,包括它们在内存分配、类型转换、空间初始化、异常处理及释放资源方面的不同。malloc仅开辟空间,返回无类型指针,需要手动转换,而new不仅分配空间,还能自动初始化,失败时抛出异常。new运算符还有重载形式,如new[]用于动态数组。同时,文章强调了未初始化的指针被称为野指针,释放资源后仍使用的指针则成为悬挂指针的问题。
摘要由CSDN通过智能技术生成

malloc: 1)malloc是函数,成功返回的是无类型指针,需要强转;
2)malloc需要sizeof()计算空间小;
3)malloc只开辟空间;
4)malloc申请空间失败会返回NULL指针;
5)malloc释放资源由free()释放;
new: 1)new是关键字,成功返回类型为内置类型或自己设计的类型;
2)new不需要sizeof(),自己计算空间大小;
3)new 不但开辟空间,并且开辟后进行初始化;
4)new申请空间失败会抛出异常;
5)new释放资源由delete() 释放;
new()与new[]区别:new(n):
1)开辟一个空间,初始化为n;
2)删除时delete p;
new[]:
1)开辟n的空间,但并没有自己初始化,需要手动初始化;
2)删除时delete [] p ;new的三种调用规则:int *pa =(int *) :: operator new (sizeof(int)); //new的重载,相当malloc; //失败仍然抛出异常
置位new||定位new:
new(pa) int (10); //不是开辟空间,用10初始化pa指向的空间operator delete (pa);
&&&&&&&&&&&&&&&指针问题:
野指针:int *p; 未初始化的指针叫野指针;
空玄指针: new或者malloc空间后,释放资源后指针仍然指向该空间,指向一个随机值,指向空间的值依然可以被更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaysAway

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值