相同点:
- 都可用于申请动态内存和释放内存
不同点:
- malloc 和 free 是C/C++ 标准库函数, new / delete 是 C++ 的运算符
- new 自动计算需要分配的空间,而 malloc 需要手工计算所需字节数
- new 是类型安全的,而 malloc 不是;例:
int *p = new float[2]; //编译时指出错误
int *p = (int*) malloc(2*sizeof(double));//编译时无法指出错误
- new 调用 operator 分配足够的空间,并调用相关对象的构造函数,而 malloc 不能调用构造函数;delete 将调用该实例的析构函数,然后调用类的 operator delete ,以释放该实例占用的空间,而free 不能调用析构函数
- malloc/free 需要库文件支持, new/delete 则不需要