1. new是C++的操作符,不用引入头文件
malloc是C的库函数,需要引入库函数头文件 #include<stdlib.h>或者#include<malloc.h>
malloc:动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址
2. new分配内存无须传入内存块的大小,可自动计算所需要大小,正确分配内存则返回指定对象类型的指针,比较安全。分配失败则抛出一个 bad_alloc异常;
而malloc分配内存须知内存得到大小(字节),分配正确返回void*类型指针,需强制转换为我们需要的类型。分配失败则返回NULL指针。
3. new/delete可调用构造函数和析构函数
而malloc/free只分配或释放内存,并不能对所得的内存进行初始化
4. new不能重新分配内存,而malloc可使用calloc重新分配内存
5. new操作符从自由存储区上为对象动态分配内存空间;而malloc从堆上动态分配内存。
6. new可重载,malloc不可重载。
7. new可以给数组分配内存;而malloc不可以。