zoukankan      html  css  js  c++  java
  • C++之new、delete 与malloc、free的异同

            在C/C++编程中常常会申请内存。而对内存的申请释放操作有两套方法: new、delete 与malloc、free。他们的使用最好是成对使用,不要去混搭---这可不是时尚界哦。

    例如以下是这两组方法的异同或差别:

            1、new、delete是c++中的操作符,malloc、free是C中的一个函数,它们都可用于申请动态内存和释放内存。

            2、new 不止是分配内存,并且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则仅仅分配内存,不会进行初始化类成员的工作,相同free也不会调用析构函数。

    因为malloc/free是库函数而不是运算符,不在编译器控制权限之内。不可以把运行构造函数和析构函数的任务强加于malloc/free。

            3、内存泄漏对于malloc或者new都能够检查出来的。差别在于new能够指明是哪个文件的哪一行。而malloc没有这些信息。 

            4、new的效率malloc略微低一些,new能够觉得是malloc加构造函数的运行。new出来的指针是直接带类型信息的。 而malloc返回的都是void指针

            5、malloc不会抛异常,而new会;无法重定义malloc失败时的默认行为(返回NULL),可是我们能够重定义new失败时默认行为。比方不让其抛出异常。

  • 相关阅读:
    组合数取模 Lucas定理
    关于上下界的二分查找
    POJ 1091 跳蚤
    Eular 函数模板
    POJ 数学(3)
    SRM 567 div2
    SRM 570 div2
    最大最小搜索,alpha beta 剪枝
    JavaScript:prototype属性使用方法
    ArcGIS网络分析之Silverlight客户端服务区分析(五)
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6684747.html
Copyright © 2011-2022 走看看