new/delete与malloc/free的不同:

①new/delete分配内存的位置是自由存储区,malloc/free分配内存的位置是堆

自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区

堆是操作系统所维护的一块特殊内存,用于程序的内存动态分配

②new内存分配成功返回完整类型指针,而malloc是返回void*

类型安全很大情况下等于内存安全,new是符合类型安全性的操作符

③new内存分配失败时,会抛出bac_alloc异常,malloc分配内存失败时返回NULL

除此之外,使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算

而malloc则需要显式地指出所需内存的尺寸

④new是C++操作符,而malloc是函数

new/delete允许重载,malloc/free不允许,这也意味着new/delete的实现可以基于malloc

而malloc的实现不可以去调用new

⑤new/delete会调用构造函数和析构函数,而malloc/free不会

new与malloc的不同相关推荐

  1. malloc(0)-malloc 0 字节

    C17中有如下描述: 7.22.3 Memory management functions 1 The order and contiguity of storage allocated by suc ...

  2. 连续地址数据(数组或者malloc的内存)作为函数参数

    在编程时,一簇连续的内存单元,比如数组或者malloc的内存块,如下的数组a 或者指针p. int a[4]; int *p = malloc(4 * sizeof(int)); 我们要想修改上述连续 ...

  3. malloc为什么会报错:memory corruption

    最近遇到一个问题,很有意思,在此记录下,以备后续参考. 程序运行异常,报错:malloc: memory corruption. 用gdb 调试程序,bt 如下,程序在申请344 bytes内存时失败 ...

  4. TCMalloc(Thread-Caching malloc) 基本设计原理

    文章目录 背景 如何使用 架构概览 1. TCMalloc Front-end 1.1 小对象和大对象的内存分配过程 1.2 内存释放过程 1.3 Per-CPU mode 1.4 Per-threa ...

  5. 关于C语言中的malloc和free函数的用法

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

  6. 利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配

    TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员.与标准的glibc库的Malloc相比,TCMalloc库在内存分 ...

  7. TCMalloc:线程缓存的Malloc

    转载自: http://shiningray.cn/tcmalloc-thread-caching-malloc.html 作者:Sanjay Ghemawat, Paul Menage 原文 翻译: ...

  8. 深入理解malloc和free

    1.为什么free是void*,那么它怎么知道要释放多少内存? <UNIX环境高级编程> <C语言编程常见问题解答> <你必须知道的495个C语言问题> <U ...

  9. 【C++】new和malloc的区别

    一.显而易见的区别 1.属性 new/delete是C++关键字,需要编译器支持: malloc/free是库函数,需要头文件支持. 2.参数 使用new操作符申请内存分配时,无须指定内存块的大小,编 ...

  10. malloc一次性最大能申请多大内存空间

    受用户态内存地址空间的限制.64 位系统下分配几个 T 不成问题. 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:zz matrix 链接:http://www.zhi ...

最新文章

  1. 异常“企图释放并非呼叫方所拥有的多用户终端运行程序”的处理
  2. 修改2k自动登陆的脚本
  3. 从零到一:用Phaser.js写意地开发小游戏(Chapter 4 - 游戏即将开始)
  4. 分页与无限滚动在评论区的设计差异
  5. 四则运算之Right-BICEP测试
  6. CodeForces - 660C Hard Process
  7. RxJava 之创建操作符
  8. 一个人不孤单,想一个人才孤单
  9. 如何在Sitecore CMS中打开内容编辑器
  10. python items和setdefault函数
  11. 【渝粤教育】电大中专电商运营实操 (7)作业 题库
  12. 好东西再安利一遍!!
  13. Linux网络命令之 `Hping3`
  14. IAR Embedded Workbench安装
  15. java nutch 爬虫_Java分布式爬虫Nutch教程——导入Nutch工程,执行完整爬取
  16. 自然数e的故事(转)
  17. 怎么判断两个多项式互素_多项式互素的等价条件
  18. 全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)
  19. python爬虫之爬取网易云音乐的歌曲图片和歌词
  20. MySQL installer直接解决安装(包括不想安在c盘也OK)、更新、卸载问题

热门文章

  1. python怎么读写文件-python怎么读取文件内容
  2. python全套完整教程-Python语言基础50课 全套完整版(含doc版)
  3. php和python-什么是Python和php?Python与PHP有什么区别
  4. 语音识别的两个方法_语音识别的应用有哪些
  5. 微信小程序开发公司哪家好?
  6. 10个PHP常见安全问题(实例讲解)
  7. html中grid布局,CSS:玩转grid布局
  8. java异常原则_有效处理Java异常三原则
  9. Vue使用html2canvas将Dom转化为图片
  10. Vue中this.$router.replace和this.$router.push的区别