美文网首页
malloc/free 和 new/delete的区别

malloc/free 和 new/delete的区别

作者: mingzhi618 | 来源:发表于2019-03-19 10:52 被阅读0次

malloc/free 和 new/delete的区别?

相同点:都是从堆上申请空间,用户需要自己来管理。

不同点:

1.所属语言

new是C++特性,malloc是C的。C++一般使用的new,但也可以使用malloc,而C用malloc、realloc、calloc。

2.申请释放方式

new和delete,malloc和free配对使用。new的使用比malloc简单,内部已经实现了大小的计算、类型转换等工作,而malloc使用时需要计算大小及进行类型转换。

3.malloc是标准库函数,new是C++的运算符。

new可以被重载,但malloc不可以,malloc需要库函数的支持,new不需要。

4.构造与析构

new和delete会自动调用构造函数和析构函数,但是malloc和free不会。

5.申请内存失败

申请内存失败,默认new抛出异常,malloc返回NULL。

6.重新分配内存

malloc可利用realloc重新分配内存,new不可以。

7.类型安全性

new会检查类型是否对应,如果不对应会保存,但malloc只关注申请内存的多少,不会检查类型。

8.类型转换

malloc返回的类型是void,所以在调用malloc时要进行显式的类型转换,将void转换成所需的指针类型,new不需要。

9.数组分配

new有明确的方式处理数组的分配,即new[],释放也有delete[],malloc没有。

10.设置内存分配器

new可以设置自己的内存分配器,malloc不可以。

---------------------

作者:ZWE7616175

来源:CSDN

原文:https://blog.csdn.net/ZWE7616175/article/details/80330800

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

  • 2018-05-09

    new delete new delete与malloc free的区别 对于基本数据类型 malloc与free...

  • 面试准备

    C++面试总结 New、Delete和malloc、free的区别? New和Delete自动调用 构造函数 和 ...

  • malloc/free和new/delete

    1. malloc/free与new/delete的区别 1、malloc/free是C语言的标准库函数;new/...

  • 程序设计

    1 new/delete和malloc/free区别二者都是用于分配控件和释放空间的。new/free是c++中支...

  • 网络与通信

    1 new/delete和malloc/free区别二者都是用于分配控件和释放空间的。new/free是c++中支...

  • android

    1 new/delete和malloc/free区别二者都是用于分配控件和释放空间的。new/free是c++中支...

  • C++面试(1)

    1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释...

  • C++经典面试题(最全,面中率最高)

    1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释...

  • C++笔试整理

    1、new 、delete 、malloc 、free 的关系malloc 与 free 是 C++/C 语言的标...

  • new/delete 和 malloc/free 的区别

    1.malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态...

网友评论

      本文标题:malloc/free 和 new/delete的区别

      本文链接:https://www.haomeiwen.com/subject/uztgmqtx.html