C++内存分配new和malloc的区别

这里有一篇讲的很详细new和malloc的区别

总结一下:

1.new/delete是操作符,malloc/free是函数

2.malloc分配内存需指定大小,且只能是一般数据类型,分配成功返回void*,需要强制类型转换,分配失败返回NULL,需手动检查是否分配成功;new分配内存无需指定大小,可以为类对象,分配成功返回特定类型指针,分配失败抛出异常。

3.new分配内存,一般类型可以指定初始化,未初始化的保留其在内存中的原值;对象会调用其默认构造函数,也可以指定构造函数。

4.delete对象的指针时会调用其析构函数,而free则无法调用;delete指针之后一般还保留其原来的内存地址,再次使用出错,所以delete完之后需要赋值为NULL。

5.C++保留malloc的原因是C++有时需要使用C编写的库,而C中只能使用malloc,如果使用new会出现错误。

posted @ 2017-09-01 18:06  Initial_Dream  阅读(249)  评论(0编辑  收藏  举报