高质量c++(有了malloc/free 为什么还要new/delete )
2015-09-30 17:31
225 查看
有了malloc/free 为什么还要new/delete ?
malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个
能完成清理与释放内存工作的运算符delete。注意new/delete 不是库函数。
malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个
能完成清理与释放内存工作的运算符delete。注意new/delete 不是库函数。
相关文章推荐
- some new eigrp feature
- .net(c#)中的new关键字详细介绍
- Rails Routes中new、collection、member的区别浅析
- c语言中malloc、realloc与calloc 的区别以及联系
- C++中new与delete、malloc与free应用分析
- 基于C# 中可以new一个接口?的问题分析
- 全面解析C++中的new,operator new与placement new
- C语言中的malloc使用详解
- 邪恶的eval和new Function使用介绍
- javascript new一个对象的实质
- 详解new function(){}和function(){}() 区别分析
- 对new functionName()定义一个函数的理解
- Eval and new funciton not the same thing
- 详解Python中的__init__和__new__
- python中的__init__ 、__new__、__call__小结
- new和malloc的区别深入解析
- C语言new操作的安全性分析
- C# new和override的区别分析
- 关于c++ new的三种使用方式
- cheap new balance outlet online