new/delete 与 malloc/free 的区别
来源:互联网 发布:中宏网数据库 编辑:程序博客网 时间:2024/05/08 16:11
在 C++ 中,申请动态内存与释放动态内存,用 new / delete 与 malloc / free 都可以,而且它们的存储方式都相同,new / malloc 动态申请的内存都位于堆中,无法被操作系统自动回收,需要对应的 delete / free 来释放空间,同时对于一般的数据类型,如 int、char型,它们的效果都是一样的。
malloc / free 是 C / C++ 语言的标准库函数,在 C 语言中需要头文件 <stdlib.h> 的支持, new / delete 是 C++ 的运算符。对与类的对象而言,malloc / free 无法满足动态对象的要求,对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数。
主要区别:
- new 能够自动计算需要分配的内存空间,而 malloc 需要手工计算字节数。
- new 与 delete 直接带具体类型的指针,而 malloc 与 free 返回 void 类型的指针。
- new 是类型安全的,而 malloc 不是。
- new 一般分为两步,分别是 new 操作和构造。new 操作对应于 malloc,但 new 操作可以重载,可以自定义内存分配策略,不做内存分配,甚至分配到非内存设备,而 malloc 不行。
- new 将调用构造函数,而 malloc 不能,delete 将调用析构函数,而 free 不能。
- malloc / free 需要库文件 stdlib.h 支持,而 new / delete 则不需要库文件支持。
参考文献:《程序员面试笔试宝典》
1 0
- malloc/free 与 new/delete 的区别
- new/delete 与malloc/free的区别
- malloc/free 与new/delete 的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free 与 new/delete 的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- new/delete与malloc/free的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- new/delete 与 malloc/free 的区别
- JSP笔记整理
- VLAN之间路由的切断
- Yii2.0 删除数据(CRUD)
- 开学季,谨防大学生贷款平台的钓鱼诈骗风险!
- Pythagorean Triples CF #368 div2 C
- new/delete 与 malloc/free 的区别
- 前端面试之js相关问题(一)
- Java迭代器的使用
- 如何用 Swift 实现弱代理
- python print 输出 颜色 配置
- Android学习之使用高德Location实现定位
- C语言再学习 -- 关于注释
- Java常量池
- html5 css 问题