malloc/free和new/delete的区别

89 阅读1分钟

(1)malloc/free是C的标准库函数,new/delete是C++的运算符;

(2)new/delete在申请和释放内存时会自动调用对象的构造函数和析构函数,malloc/free不会;new申请内存会初始化,malloc申请内存不会初始化;

(3)new申请内存返回的是指定类型的指针,且自动计算内存大小,malloc申请内存返回的是void*,需手动计算内存大小;

(4)如果申请内存失败,malloc会返回NULL,new会抛出异常;