malloc/free 和 new/delete
2024-08-26 12:21:37
(本文参考于网上)
首先两者都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,只用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加给malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。new/delete不是库函数而是运算符
malloc 是C语言的标准库函数,它实现了在堆内存管理中进行按需分配的机制,但是它不提供在C++中对像构造的支持,而new 则是一个 在C++中同时完成堆内存按需分配支持和对像构造功能的运算符。
对于这两者需要注意的是:
(1)内存分配可能失败,所以在动态分配之后需要检验一下是否分配成功。
(2)在释放内存后,需要将指针置空,否则可能变成“野”指针。
最新文章
- Android服务开机自启动
- data.table包
- 用c#开发微信 (17) 微活动 3 投票活动 (文本投票)
- ActiveMQ学习(三)——MQ的通讯模式
- 脱壳脚本_手脱壳ASProtect 2.1x SKE -&;gt; Alexey Solodovnikov
- 第一贱-UILabel
- Github错误:Failed to publish this branch
- s7-300 第二讲
- slick对超过22个属性的表进行映射的两种办法
- 从零开始学习PYTHON3讲义(十)自己做一个“电子记事本”
- Photoshop给草坪上的人物加上唯美的紫色霞光
- easyui技术积累
- asp.net MVC 5 路由 Routing
- Linux 系统日志
- ARC设置
- iis日志分析软件及大文本切割软件下载
- thinkcmf 角色授权支持分类
- 第一个PyQt5窗口
- TensorFlow中get_variable共享变量调用
- 【shopex】添加网页挂件widgets