[c++] new、malloc、delete、free

new和malloc都是在堆上开辟新的空间给变量使用。delete和free则都是释放指针指向的堆空间。

1)new 和 delete是关键字,而malloc和free是函数调用,前者效率更高。

2)new在开辟空间时可以初始化变量,而malloc不行。如果是类类型,那么new会调用构造函数,malloc则不行。

3)new根据变量类型自动申请对应大小的空间,而malloc则需要指定申请空间的大小。

4)new返回对应类型的指针,malloc则返回空类型指针。

5)delete会先调用析构函数,然后释放内存,free则不行。

6)new和delete被看作两种操作符,因而可以被重载,而malloc和free不行。

7)new分配内存失败后悔抛出bad_alloc异常,而malloc则是返回NULL。

8)new是从自由存储区(free store)为对象分配动态的内存空间。而malloc则是堆。(自由存储区受部分情况下最后不指向系统堆空间)。

posted @ 2022-03-29 16:57  Cheung-10  阅读(26)  评论(0)    收藏  举报