malloc/free与new/delete的区别

来源:互联网 发布:网络贷款能不能立案 编辑:程序博客网 时间:2024/06/06 18:25

“说说malloc、free和new、delete之间的区别吧。”

“malloc和free好像是C语言中常用的,new和delete好像是只有在C++中才用。”

...

 

主要有4点区别:

①malloc/free是函数,new/delete是运算符。

②malloc在堆上申请内存空间,new在自由存储区上申请内存空间。(关于“堆”和“自由存储区”,请看:“堆”和“自由存储区”

③申请内存空间失败时,malloc返回NULL,new抛出std::bad_alloc异常。

④对于“对象”类型时,请注意:malloc/free不调用(构造、析构函数),这意味着,在构造函数和析构函数中的内容需要单独设计函数来完成。

 

举例:

①②③

malloc函数形式:void* malloc(int size)

返回值为void*,参数为int。void*表示申请的内存首地址,size表示内存空间大小(单位:字节)。

 

如图,d2的name的数值是乱码,即:构造函数中的赋值没执行,换句话说,构造函数没执行。

 

如图,加下setName()的调用后,d2的name有值了。

 

因此,“对象类型”使用malloc申请内存的时候,要单独设计函数来实现构造函数和析构函数的内容。

原创粉丝点击