malloc/free不是可以申请内存吗?那为什么C++还需要弄个 new/delete 出来呢??

上传的附件
你的回答被采纳后将获得: 12点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : 书中有代码有bug,进程伪装,不能在任务管理器上显示伪装后的路径 大数据 和 云计算 这两个概念有什么区别? : 下一篇keyboard_arrow_right

6个回答

Benjamin
2019-02-28 09:33:08

这两个应该作用都是申请内存吧?难道有区别?

Kanagawa
2019-02-28 11:22:24

肯定是有去别的!malloc/free是C语言的,new/delete是C++的

ilovehim
2019-02-28 15:16:19

对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。

对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。

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

BoyMeetsGirl
2019-03-01 09:42:53

由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数!

Jasmine
2019-03-01 23:28:23

用来申请内存啊

Mute
2019-03-02 09:50:14

一个是C语言的,一个是C++的,不一样啊

精彩评论

  • qt售卖信息表的查询和自动更新
    像这类与数据库打交道的系统程序,本质上就是执行SQL语句。所以,你先检查自己写的SQL语句是否都正确,检查的方法可以是直接在数据库中执行自己的SQL语句,看看是否达到预期效果;如果SQL语句有问题,那就修改SQL语句,改正确就行;若SQL语句没问题,那就是你的程序调用执行SQL语句有问题,那么检查自己程序的SQL语句调用函数使用是否正确,参数是否都填写正确了!
    2019-06-17 10:28:36 thumb_up( 4 )
  • 已经有malloc/free了,C++中为什么还需要new/delete
    由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数!
    2019-03-01 09:42:53 thumb_up( 8 )
  • [数据结构与算法]时间复杂度是怎么算的?
    求解算法的时间复杂度的具体步骤是: 找出算法中的基本语句;算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。 计算基本语句的执行次数的数量级;只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。 用大Ο记号表示算法的时间性能。将基本语句执行次数的数量级放入大Ο记号中。 如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如: for (i=1; i<=n; i++) x++;for (i=1; i<=n; i++) for (j=1; j<=n; j++) x++; 第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。
    2019-01-30 10:04:15 thumb_up( 6 )
  • 可以问一下站内那个基于Java的办公自动化系统怎么导入与运行吗
    你是用什么软件开发Java程序?我学生用的是eclipse软件如果你是用eclipse的话:1.file中找到import(鼠标右键也可以找到)2.点击Existing Project into Workspace3.在select root directory右边点击Browse4.查找需要导入的工程文件就行了
    2020-03-09 13:30:36 thumb_up( 2 )
eject