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

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

keyboard_arrow_left上一篇 : HBuilder MUI框架中的侧滑菜单,点击菜单项没有反应??? 大数据 和 云计算 这两个概念有什么区别? : 下一篇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++的,不一样啊

精彩评论

  • C++Builder 编程工具太老吗?
    提醒下楼上的,C++ Builder还在更新啊,都出到10.3了。。我也比较认同楼主的看法,只能能满足功能需求和后续的维护需求,用什么工具来开发都不是问题,类似 C++ Builder 这些只是开发的工具,既然是工具总会有它适用一面和不适用的一面的
    2019-03-19 09:40:30 thumb_up( 1 )
  • C++Builder 获取像素点和写像素点如何编程
    Image1->Canvas->Pixels[x][y] 就是一个整数,例如 0x000000,表示黑色;设置像素点的话,直接修改 Image1->Canvas->Pixels[x][y] 的值就可以了。例如:Image1->Canvas->Pixels[x][y] = 0xffffff;
    2019-03-18 15:43:10 thumb_up( 1 )
  • 在C语言或者C++中,如何旋转一张图片呢??
    通过矩形的中心坐标与原顶点坐标以及旋转角度,计算矩形的旋转后4个顶点的位置的公式如下: x2 = (x1-x0)*cos(q) –(y1-y0)*sin(q) + x0; y2 = (x1-x0)*sin(q) + (y1-y0)*cos(q) + y0;其中,q表示矩形的旋转角度,x1表示矩形的原顶点横坐标,x0表示矩形的中心坐标。 但是,C语言中的sin()函数和cos()函数中的参数并不是角度,而是弧度,所以需要我们通过下述公式将角度转化为弧度: 弧度= 3.1415926*角度/180;根据上述公式,我们可以计算一个点绕另一个点旋转一定角度后的位置坐标。 飞旋转的原理可以是:计算出图片各个点旋转后的坐标,再把每个点画到屏幕上!
    2019-03-06 18:53:38 thumb_up( 4 )
  • 一直搞不懂C++中,指针和引用有什么区别?
    引用不能为NULL,指针可以为NULL引用变量内存单元保存的是被引用变量的地址“sizeof 引用” = 指向变量的大小 , “sizeof 指针”= 指针本身的大小
    2019-03-04 14:59:04 thumb_up( 2 )
eject