C/C++ - malloc/free和new/delete的区分
2021-06-19 20:05
标签:lib ++ str span height std 构造 不可 运算符 new/delete与malloc/free的区别主要表现在以下几个方面: 注意:最主要的区别,new/delete是运算符,而malloc/free是函数 (1)、new能够自动计算需要分配的内存空间,而malloc需要手工计算字节数。 例如,int* p1=new int[2] , int* p2=malloc(2*sizeof(int))。 (2)、new/delete返回直接带具体类型的指针,malloc/free返回void类型的指针。 (3)、new是类型安全的,而malloc不是。例如,int* p=new float[2],编译时就会报错;而int* p=malloc(2*sizeof(float)),编译时编译器就无法指出错误来。 (4)、new一般由两步构成,分别是new操作和构造。 new操作对应于malloc,但new操作可以重载,可以自定义内存分配策略,不做内存分配,甚至分配到费内存设备上,而malloc不可以。 (5)、new将调用构造函数,而malloc不能;delete将调用析构函数,而free不能。 (6)、malloc/free需要库文件stdlib.h支持,new/delete则不需要库文件支持 C/C++ - malloc/free和new/delete的区分 标签:lib ++ str span height std 构造 不可 运算符 原文地址:https://www.cnblogs.com/goul/p/9676116.html
文章标题:C/C++ - malloc/free和new/delete的区分
文章链接:http://soscw.com/index.php/essay/96097.html