1 malloc与freeC语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
2  对于非内部数据(比如int char*这种)类型的对象而言,光用maloc/free无法满足动态对象的要求,这是因为对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。也就是malloc和free作为库函数没法完成类对象的构造函数析构函数。
3 因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
4 C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。

那么当我们new一个对象的时候发生了什么呢?首先new这个过程一定是在运行过程中实现的,而不是编译过程。在堆中进行内存分配,实际上发生了如下的过程:

(1)创建一个新对象,分配内存空间;

(2)将构造函数的作用域作用于新对象,也就是有一个this指针指向了这个对象;

(3)执行构造函数中的代码(为这个新对象添加属性);

(4)返回这个对象。

malloc,free 与new delete的区别相关推荐

  1. 内存四区 malloc/free与new/delete的区别

    前言 之前写了一篇关于<快速排序的4种优化>的博文,当时在验证各种情况的时候忽略内存分配的问题,导致所得到的结果分析的不全面.因为在刚开始写程序的时候将数组声明在 main() 里面,这样 ...

  2. linux free函数头文件,Linux_Linux下malloc/free与new/delete的区别,由于malloc/free是库函数,不是 - phpStudy...

    Linux下malloc/free与new/delete的区别 由于malloc/free是库函数,不是运算符,他们不能执行构造函数和析构函数,只是负责分配内存. 1.malloc与free是C++/ ...

  3. 百度笔试题:malloc/free与new/delete的区别

    相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同. malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符.对于非内部数据类的对象而言,光 ...

  4. 百度笔试题,malloc/free与new/delete的区别与联系

    相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同. malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符.对于非内部数据类的对象而言,光 ...

  5. malloc/free与new/delete的区别与联系

    相同点: (1)都是申请内存,释放内存,free和delete可以释放NULL指针: (2)都必须配对使用,这里的配对使用,可不能理解为一个new/malloc就对应一个delete/free,而是指 ...

  6. malloc/free和new/delete的区别

    malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存. 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的 ...

  7. malloc/free 与 new/delete的区别

    区别: new:只会调用一次构造函数,new申请的空间是单个类型的对象 new[]:申请的是一段连续的空间,会多次调用构造函数. 申请空间的方式必须与释放的方式成对使用: new:(底层是对mallo ...

  8. malloc/free与new/delete的区别

    malloc/free是c/C++语言的标准库函数:new/delete是c++的运算符,都可以用申请动态内存和释放内存. 对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要 ...

  9. 百度面试题:malloc/free 与 new/delete 的区别

    原文地址:http://blog.csdn.net/hackbuteer1/article/details/6789164 (1)运算符(new/delete )在编译器的控制权限之内,而库函数(ma ...

最新文章

  1. ubuntu 防火墙打开关闭
  2. Redis简单动态字符串
  3. 如何将比Long类型更大数值字符串转化为整数
  4. Confluent官博:Kafka最牛队列,性能15倍于RabbitMQ!
  5. Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
  6. 单峰数组找最大元素C语言,查找单峰数组中的第k个元素
  7. 转 - 猴子都能看懂的比特币区块链技术之加密算法
  8. 打印机驱动冲突和端口异常:win10更新部分补丁后,打印机本地连接(连接打印机的主机)可以打印,其他共享网络中的电脑可以连接到打印机,但不能打印——解决方案...
  9. 数据分析数据可视化(三)
  10. bresenham算法画圆mfc实现_kd-tree理论以及在PCL 中的代码的实现
  11. Android Studio汉化版教程
  12. 抢红包算法 c语言版本,抢红包算法实现示例
  13. 专家鼓励住房、汽车等大宗商品消费
  14. [思考的乐趣] 有趣的莫比乌斯带
  15. Python中小波工具(pywt)分析EEG数据
  16. PPC关键字广告是什么?一次搞懂CPC、CPM广告投放术语
  17. 正则表达式,终极使用!3个工具,搞定一切
  18. 小程序毕设作品之微信小程序点餐系统毕业设计(2)小程序功能
  19. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全...
  20. MySQL Show命令的用法大全

热门文章

  1. python真的是吹过了-被吹的神乎其神的Python到底都能干什么
  2. python自学看什么书-有什么好的自学 Python 的书籍推荐?
  3. python编程入门书籍-程序员大佬,给Python零基础入门书籍教程的一些建议!
  4. python函数定义及调用-Python函数的基本定义和调用以及内置函数
  5. python利器-python利器APP下载-python利器 v4.0.1_手机乐园
  6. python有趣的代码-介绍wtfPython—Python中一组有趣微妙的代码【收藏】
  7. 语音识别介绍(下篇)
  8. 阿里云语音识别模型端核心技术选讲
  9. c语言写贪吃蛇什么水平_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码...
  10. 【深度优先搜索】计蒜客:中国象棋