1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 malloc实现了在堆内存管理中进行按需分配的机制,但是它不提供在C++中对像构造的支持;new 则是一个 在C++中同时完成堆内存按需分配支持和对像构造功能的运算符,由于c++中的运算符功能较C中的运算符在意义上作了扩展的,可以理解成函数调用 

2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 

3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。

4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数;而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数。

5、new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针。

转载于:https://www.cnblogs.com/calamus/p/5877729.html

C++ malloc new 的区别相关推荐

  1. malloc()与calloc区别【转】

    转自:http://blog.csdn.net/firecityplans/article/details/4490124/ 版权声明:本文为博主原创文章,未经博主允许不得转载. Both the m ...

  2. new/delete与malloc/free的区别与联系详解

    本博客主要说明new/delete,malloc/free的区别与联系,如下: 1.malloc/free为C的标准库函数,函数原型为: void* malloc(size_t size)//参数代表 ...

  3. malloc()与calloc区别

    1.分配内存空间函数malloc 调用形式: (类型说明符) malloc (size) 功能:在内存的动态存储区中分配一块长度为"size" 字节的连续区域.函数的返回值为该区域 ...

  4. calloc() 和malloc() 有什么区别?

    calloc() 和malloc() 有什么区别?利用calloc 的零填充功能安全吗?free() 可以释放calloc() 分配的内存吗,  还是需要一个cfree()? calloc(m, n) ...

  5. realloc,malloc,calloc的区别

    三个函数的申明分别是:  void* realloc(void* ptr, unsigned newsize);  void* malloc(unsigned size);  void* calloc ...

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

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

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

    1.new 是c++中的操作符,malloc是c 中的一个函数 2.new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员 ...

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

    还是先说说区别吧:     1. new/delete是C++里才有的,而new/delete与malloc/free一个显著的区别在于,new是建造一个对象,并调用对象的构造函数来初始化对象,其实在 ...

  9. new/delete和malloc/free的区别(举例说明)(简单点)

    先说说区别: 1. new/delete是C++里才有的. 2. new/delete通常来说是操作符,就是"+","-"一样. 3. new/delete是可 ...

  10. new/delete和malloc/free的区别一般汇总

    一.基本概念  malloc/free: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针.如果分配失败,则 ...

最新文章

  1. IMAX融资5000万美元,三年内要打造25个VR项目
  2. 架构师之路 — 分布式系统 — 分布式一致性难题
  3. python中str isupper_python pandas Series.str.isupper用法及代码示例
  4. phpstorm自动补全
  5. 【Leetcode】创建二叉树
  6. 直播预告 | 全国高校人工智能人才与科技莫干山论坛直播来袭!
  7. 解决VS2019窗体设计器不显示
  8. SAP UI5 CSS 类 sapUiSmallMarginEnd 的工作和添加原理
  9. php自动加载指定目录下的类文件
  10. LeetCode 609. 在系统中查找重复文件(哈希)
  11. 吴恩达机器学习笔记四之正则化
  12. SQL --几张表公有字段的查询
  13. I—爆炸的符卡洋洋洒洒(不模不行的DP)
  14. public 返回一数组_数组:滑动窗口拯救了你
  15. ros_tools.prompt 断点调试
  16. 计算机硬盘是通用的吗,通用账务系统安装到计算机硬盘前需要进行的准备工作有()。A.清理硬盘B.校准计算机系统时间C.重设C - 作业在线问答...
  17. 软件工程:PG.SE.PL.PM角色定义
  18. 3.单片机 数码管显示
  19. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
  20. MySQL级联优缺点_【Mysql】外键级联与级联的劣势

热门文章

  1. Oracle 中 start with 递归查询、case when 条件表达式、rowid 伪列去重
  2. Android 控件之 Date Time 组件
  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-5.开源工具的优缺点选择和抽象方法的建议...
  4. user 不在 sudoers 文件中。此事将被报告。
  5. 查看EXE或DLL调用的DLL
  6. Django(五):视图和路由系统
  7. asp.net执行js出现“已终止操作”的解决方法
  8. markdown 常用语法格式
  9. D8 NOTES 2018-10-17
  10. 2017.4.26-morning