共同点:都用来申请和释放动态内存, 对于内置类型,两者的作用是相同的
差异:
1. new/delete是C++ 的关键字(操作符),malloc/free属于C/C++的标准库函数,调用时需要包含头文件;
2. new 自定义类型对象时,不仅分配内存,还调用类对象的构造函数进行成员初始化;
delete 自定义类型对象时,不仅释放内存,还调用类对象的析构函数清理内存;
而malloc/free只负责申请和释放内存。
malloc/free的存在理由:
C++程序中常常调用C函数,C程序只能用malloc/free管理动态内存;