c++中的new和c中的malloc都是用来申请内存空间的,那么区别是:
1、申请内存的位置
new在动态存储区分配内存,malloc在堆上分配内存
2、返回值类型
new返回对象类型的指针,类型与对象严格匹配
malloc返回 void *,通过强制类型转换成我们需要的对象类型
3、容错机制
new分配失败时,抛出异常,不返回NULL
malloc分配失败时,返回NULL
4、内存分配大小
new动态分配不需要指定大小,编译器自行处理
malloc需要显示声明大小,常与sizeof搭配使用
5、其他
new / delete涉及了构造函数和析构函数的使用
malloc / free 没有此操作
另外,new 是基于malloc进行工作的,即调用了malloc