1、C:分配内存malloc;释放内存free; 2、C++:分配内存new;释放内存delete; 3、OC:分配内存alloc ew;释放内存dealloc->free1、malloc和free是C/C++语言的标准库函数,new/delete是C++的运算符。new/alloc用于OC的内存分配。它们都可用于申请动态内存和释放内存。 2、对于非内部数据类型的对象而言,只有malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在销毁之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因为C++语言需要一个能够完成动态内存分配和初始化工作的运算符new,以及一个能完成清理和释放内存工作的运算符delete。需要注意的是new/delete不是库函数 3、由于内部数据类型的"对象"没有构造和析构的过程,对它们而言malloc/free和new/delete是等价的 4、既然new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘汰出局呢?这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存 5、如果delete释放malloc申请的动态内存,结果也会导致程序出错,但是该程序的可读性很差,所以new/delete必须配对使用,malloc/free也是一样