malloc/free是C/C++的标准库函数,new/delete是C++的运算符.它们都可用于动态申请和释放内存.
对于非内部数据类型的对象,malloc/free无法满足动态对象的要求.对象在创建的同时要自动执行构造函数,在释放的同时要自动调用析构函数.由于malloc/free是库函数,不是运算符,不在编译器的权限控制内,不能把构造函数和析构函数的任务强加于malloc/free.
new能完成动态内存分派和初始化,free能完成清理和释放内存;
malloc/free是C/C++的标准库函数,new/delete是C++的运算符.它们都可用于动态申请和释放内存.
对于非内部数据类型的对象,malloc/free无法满足动态对象的要求.对象在创建的同时要自动执行构造函数,在释放的同时要自动调用析构函数.由于malloc/free是库函数,不是运算符,不在编译器的权限控制内,不能把构造函数和析构函数的任务强加于malloc/free.
new能完成动态内存分派和初始化,free能完成清理和释放内存;