1,malloc与free是C++/C语言的尺度库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
2,对付非内部数据范例的工具而言,光用maloc/free无法满意动态工具的要求。工具在建设的同时要自动执行结构函数,工具在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器节制权限之内,不可以或许把执行结构函数和析构函数的任务强加于malloc/free.
3,因此C++语言需要一个能完成动态内存分派和初始化事情的运算符new,以一个能完成清理与释放内存事情的运算符delete.留意new/delete不是库函数。
4,C++措施常常要挪用C函数,而C措施只能用malloc/free打点动态内存
new 是个操纵符,和什么"+","-","="……有一样的职位。
malloc是个分派内存的函数,供你挪用的。
new是保存字,不需要头文件支持。
malloc需要头文件库函数支持。
new 成立的是一个工具,
malloc分派的是一块内存。
new成立的工具你可以把它当成一个普通的工具,用成员函数会见,不要直接会见它的地点空间
malloc分派的是一块内存区域,就用指针会见好了,并且还可以在内里移动指针。
简而言之:
new 是一个操纵符,可以重载
malloc是一个函数,可以包围
new 初始化工具,挪用工具的结构函数,对应的delete挪用相应的析构函数
malloc仅仅分派内存,free仅仅接纳内存