[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则是堆。(自由存储区受部分情况下最后不指向系统堆空间)。
浙公网安备 33010602011771号