new/delete 和 malloc/free 区别总结

一、new 是c++中的操作符,malloc是c 中的一个函数

malloc与free是C++/C语言的标准库函数(要用到malloc函数,必须包含malloc.h),new/delete是C++的运算符。

二、new不仅分配内存,而且会调用构造函数。同理,delete会调用析构函数

new可以认为是malloc加构造函数的执行;delete可以认为是free加析构函数的执行。

new出来的指针是直接带类型信息的,而malloc返回的都是void指针。

对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。

三、new能够自动分配空间大小,而malloc必须指定

这是因为new 内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new 在创建动态对象的同时完成了初始化工作。

 

posted on 2015-03-17 11:20  MoZhao  阅读(188)  评论(0编辑  收藏  举报

导航