美文网首页
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

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

    相关文章

      网友评论

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

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