开发者社区> yuanrengu> 正文

malloc和new有什么区别

简介: malloc和new有以下不同: new、delete是操作符,可以重载,只能在c++中使用。 malloc、free是函数,可以覆盖,c、c++中都可以使用。 new可以调用对象的构造函数,对应的delete调用相应的析构函数。
+关注继续查看

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管理动态内存。

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android drawFunctor原理及应用
一. 背景AntGraphic项目Android平台中使用了基于TextureView环境实现GL渲染的技术方案,而TextureView需使用与Activity Window独立的GraphicBuffer,RenderThread在上屏TextureView内容时需要将GraphicBuffer封装为EGLImage上传为纹理再渲染,内存占用较高。为降低内存占用,经仔细调研Android源码,
6 0
C#还能这么玩?“诺基亚大屏独显计算器”来咯!
C#还能这么玩?“诺基亚大屏独显计算器”来咯!
4 0
听音乐不过瘾?自制一个音乐播放器!【附带函数源码】
听音乐不过瘾?自制一个音乐播放器!【附带函数源码】
6 0
我竟然用它搞懂了王者荣耀的技能释放机制!【C#委托】
我竟然用它搞懂了王者荣耀的技能释放机制!【C#委托】
6 0
使用ESC服务器配置code-server
使用ESC服务器来配置code-server服务(在线VSCode编辑器)
11 0
精心整理了100+Python字符串常用操作,收藏备用!(上)
字符串作为平时使用最多的数据类型,其常用的操作我们还是很有必要熟记于心的,本文整理了多种字符串的操作的案例,还是非常用心,记得点赞收藏哦 文章很长,高低要忍一下,如果忍不了,那就收藏吧,总会用到的
11 0
精心整理了100+Python字符串常用操作,收藏备用!(下)
精心整理了100+Python字符串常用操作,收藏备用!(下)
8 0
云服务器ECS使用感
本人在使用此服务器之后,倍感欣慰,故此时此刻有感而发。
10 0
lua脚本世界--快速入门
我想许多人并不是困惑脚本语言和非脚本语言的不同,而是困惑脚本语言为什么叫脚本语言。 脚本是由script翻译来的,这个词在用到计算机前的意思是剧本,现在把script还原到原有的意思——“剧本”来理解其在编程中的延伸意义。(脚与非脚的不同在于执行之前是否需要编译)我们可以把“编译”对应到制作电影时的“拍摄”,就是由源代码生成可执行程序的过程。 脚本语言不需要编译,即这个剧本不需要拍摄成电影,一句一句“解释”着执行就可以了。
9 0
※【python自学】7个Python生态系统核心库,你值得拥有
※【python自学】7个Python生态系统核心库,你值得拥有
10 0
+关注
529
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载