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++的,不一样啊

精彩评论

  • extern关键字用来干嘛的?
    extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义 另外,extern也可用来进行链接指定
    2019-01-08 08:57:03 thumb_up( 5 )
  • "WRITE-BUG技术共享平台"哪个版块你最讨厌
    网站很简洁,都喜欢~ 就是资源目前少了点
    2019-02-23 09:58:50 thumb_up( 2 )
  • 汇编中,溢出标志和进位标志有什么区别??
    溢出标志是OF,表示有符号数运算结果是否超出范围,运算结果已经不正确进位标志是CF,表示无符号数运算结果是否超出范围,运算结果仍然正确
    2019-02-26 10:07:21 thumb_up( 3 )
  • 已经有malloc/free了,C++中为什么还需要new/delete
    对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。 对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。 由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
    2019-02-28 15:16:19 thumb_up( 5 )
  • 对"WRITE-BUG技术共享平台"说一句祝福语
    大二暑假接触的“恶魔的世界”,我也忘记怎么找到的,总之记得是暑假参加完点赛没回家,一个人在实验室一楼的一个教室里,然后就被群主的热情与经历所鼓舞,决定好好利用剩下的两年来磨练技术,然后找份好工作。不过最后考研了,现在研一,在实验室里。之前就听说群主想自己创业了,做点啥,终于等到了,哈哈哈。还没熟悉这个平台,衷心祝愿越来越好!!!好像又回到了两年前,年轻的感觉,哈哈哈。
    2018-11-09 22:49:12 thumb_up( 8 )
  • malloc/free与new/delete有什么区别?
    new、delete是C++中的操作符,而malloc和free是标准库函数 对于非内部数据对象来说,只使用malloc是无法完成动态对象要求的,一般在创建对象时需要调用构造函数,对象消亡时,自动的调用析构函数。而malloc free是库函数而不是运算符,不在编译器控制范围之内,不能够自动调用构造函数和析构函数。而NEW在为对象申请分配内存空间时,可以自动调用构造函数,同时也可以完成对对象的初始化。同理,delete也可以自动调用析构函数。而mallloc只是做一件事,只是为变量分配了内存,同理,free也只是释放变量的内存 new返回的是指定类型的指针,并且可以自动计算所申请内存的大小。而 malloc需要我们计算申请内存的大小,并且在返回时强行转换为实际类型的指针
    2019-01-08 08:55:33 thumb_up( 6 )
eject