zoukankan      html  css  js  c++  java
  • C++笔记--new和delete(二)

    起初是在看stl源码分析的时候想到这么一个问题:new和malloc的效率孰高孰低?

    分两点考虑:

    (1)new需要在申请内存的同时执行对象的构造函数,同时返回的是指定类型的指针;但是malloc直接申请内存返回的是void类型的指针

    (2)new是运算符,malloc是库函数

    从第一点来说,new应该是效率比malloc低的;我的理解是,malloc应该和::operator new的效率一样的。

    下面讨论下为何c++需要使用new来申请动态内存?

    对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete 不是库函数。

    new和operator new?

    http://blog.csdn.net/wudaijun/article/details/9273339

    operator new只是分配内存,new运算符是还要完成构造函数的调用操作的。

  • 相关阅读:
    算法初探
    OIer数学相关
    算法初探
    MySQL事务
    MySQL多表查询
    数据库的设计
    winform选择文件夹
    获取上次打开目录
    C#拆分中文和数字字符串
    uCharts如何设置双Y轴,左侧一个右侧一个,数据源与对应的Y轴绑定
  • 原文地址:https://www.cnblogs.com/cane/p/3829572.html
Copyright © 2011-2022 走看看