(本文参考于网上)

首先两者都可用于申请动态内存和释放内存。

对于非内部数据类型的对象而言,只用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加给malloc/free。

因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。new/delete不是库函数而是运算符

malloc 是C语言的标准库函数,它实现了在堆内存管理中进行按需分配的机制,但是它不提供在C++中对像构造的支持,而new 则是一个 在C++中同时完成堆内存按需分配支持和对像构造功能的运算符。

对于这两者需要注意的是:

(1)内存分配可能失败,所以在动态分配之后需要检验一下是否分配成功。

(2)在释放内存后,需要将指针置空,否则可能变成“野”指针。

最新文章

  1. Android服务开机自启动
  2. data.table包
  3. 用c#开发微信 (17) 微活动 3 投票活动 (文本投票)
  4. ActiveMQ学习(三)——MQ的通讯模式
  5. 脱壳脚本_手脱壳ASProtect 2.1x SKE -> Alexey Solodovnikov
  6. 第一贱-UILabel
  7. Github错误:Failed to publish this branch
  8. s7-300 第二讲
  9. slick对超过22个属性的表进行映射的两种办法
  10. 从零开始学习PYTHON3讲义(十)自己做一个“电子记事本”
  11. Photoshop给草坪上的人物加上唯美的紫色霞光
  12. easyui技术积累
  13. asp.net MVC 5 路由 Routing
  14. Linux 系统日志
  15. ARC设置
  16. iis日志分析软件及大文本切割软件下载
  17. thinkcmf 角色授权支持分类
  18. 第一个PyQt5窗口
  19. TensorFlow中get_variable共享变量调用
  20. 【shopex】添加网页挂件widgets

热门文章

  1. 小tip: transition与visibility
  2. CentOS从源码安装Erlang
  3. jq 点击按钮显示div,点击页面其他任何地方隐藏div
  4. JACKSON详解
  5. Python脚本之安装linux源码包-Jenkins
  6. XSS笔记
  7. 【Python全栈-后端开发】Django入门基础-2
  8. PHP Echarts Ajax Json柱形图示例
  9. 自动微分(AD)学习笔记
  10. ubuntu12.04下编译Linux tina 2.1/android经验