- new/delete 是 C++ 的运算符,编译时需要加参数,malloc/free 是 C 语言中的函数,编译时需要头文件的支持
- new 返回指定类型的指针,并且可以自动计算所需要大小,而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针
- malloc 只管分配内存,并不能对所得的内存进行初始化,而 new 可以对所得到的内存进行初始化
- new 在分配内存失败时会抛出异常,而 malloc 在分配失败的时候会返回 NULL
- new 会调用构造函数,而 malloc 不会调用构造函数
- delete 会调用析构函数,而 free 不会调用析构函数
- new/delete 都可以被重载,而 malloc/free 都不可以被重载