malloc/free和new/delete
一. 执行内容: malloc / free: malloc 函数的参数接收所需分配的内存字节数,如果内存满足请求量,将返回指向被分配内存起始地址的指针; free 释放指针所指向的内存,其中指针必须指向所释放内存空间的首地址; new / delete: new 分为两步:1).通过operator new 分配内存 2).为被分配的内存调用一个或多个构造函数构建对象; delete 也分两步: 1).为将被释放的内存调用一个或多个析构函数 2).通过operator delete 释放内存; 二. 本质区别: 1.malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符; 2.对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++需要一个能对对象完成动态内存分配和初始化工作的运算符new,以及一个能对对象完成清理与释放内存工作的运算符delete---简而言之 new/delete能进行对对象进行构造和析构函数的调用进而对内存进行更加详细的工作,而malloc/free不能。 三. 两者联系: 既然new