malloc和new有什么区别

来源:互联网 发布:plc步进电机编程实例 编辑:程序博客网 时间:2024/04/24 11:22

malloc和new有什么区别

malloc和new有以下不同:

  • new、delete是操作符,可以重载,只能在c++中使用。
  • malloc、free是函数,可以覆盖,c、c++中都可以使用。
  • new可以调用对象的构造函数,对应的delete调用相应的析构函数。
  • malloc仅仅负责分配内存,free仅仅回收内存,并不执行构造和析构函数。
  • new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。

注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete释放,不要混用。因为两者实现的机理不同。

 

有了malloc/free为什么还要new/delete?
malloc/free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存
对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构 函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 对于内部数据类型的“对象”没有构造与析构过程,对它们而言,malloc/free和new/delete是等价的。为什么C++不把malloc /free淘汰出局呢?这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卧室正对厕所门怎么办 大门对着厕所门怎么办 大门正对厕所墙怎么办 两家住户门对门怎么办 主门对着卫生间怎么办 8岁门牙摔断了怎么办 小孩的门牙断了怎么办 孩子牙齿摔断了怎么办 门牙撞掉了一半怎么办 门牙从根断了了怎么办 牙竖着断了一半怎么办 大门牙掉了一块怎么办 牙从牙根处坏了怎么办 前门牙牙根断了怎么办 牙齿从牙根断了怎么办 门牙坏了一个洞怎么办 35岁门牙牙缝大怎么办 花从根部断了怎么办 宝宝乳牙摔断了怎么办 门牙掉了半颗怎么办 小孩牙齿撞松了怎么办 4岁宝宝牙摔松了怎么办 大人牙齿摔松了怎么办 宝宝牙齿撞松了怎么办 宝宝牙齿摔裂了怎么办 当门牙断了一半怎么办 门牙只剩牙根了怎么办 宝宝门牙磕断了怎么办 大门牙断了一点怎么办 一边脸大一边脸小怎么办 脸一面大一面小怎么办 右脸比左脸大怎么办 门牙内长了牙齿怎么办 门牙有缝怎么办矫正要多少钱 门牙磕了一小块怎么办 厕所门正对客厅怎么办 餐桌对着厕所门怎么办 厕所门对着客厅怎么办 卧室门对卧室门怎么办 新买的包有压痕怎么办 进门对着厨房门怎么办