new/delete和malloc/free区别,能否交叉使用
来源:互联网 发布:网络营销品牌优化sina 编辑:程序博客网 时间:2024/05/13 03:34
对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。
既然new/delete的功能完全覆盖了malloc/free,为什么C++还保留malloc/free呢?因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。所以new/delete,malloc/free必须配对使用。
既然new/delete的功能完全覆盖了malloc/free,为什么C++还保留malloc/free呢?因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。所以new/delete,malloc/free必须配对使用。
- new/delete和malloc/free区别,能否交叉使用
- 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 的区别
- new/delete和malloc/free的区别
- new/delete和malloc/free的区别
- malloc/free 和 new /delete 的区别
- 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和 free malloc 的区别
- emacs 配置,各个方面比较全
- Wireshark入门 tcp三次握手
- STL 优先队列使用
- 【Linux】ubuntu 无法解析主机的解决方法
- openssl
- new/delete和malloc/free区别,能否交叉使用
- 如何修改Tomcat服务器Server Locations .
- MFC 0xC015000F 错误
- SQL获取表名、列名、数据类型、描述、表最后修改时间
- Linux kill命令
- 用c/c++实现linux下检测网络接口状态 .
- JAVA GUI (action 事件)
- windows 编程入门(1)
- amoeba源码分析(一)-AmoebaProxyServer入口类分析