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空间后,释放资源后指针仍然指向该空间,指向一个随机值,指向空间的值依然可以被更改。
new与malloc的区别
最新推荐文章于 2023-10-07 16:20:59 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)