new 与malloc_new与malloc的区别

new 与malloc_new与malloc的区别malloc和new的区别0、属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。1. 参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。2

malloc和new的区别
  0、属性

  new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。

  1. 参数

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

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

  2. 返回类型

  new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。

  而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。

  3. 分配失败

  new内存分配失败时,会抛出bac_alloc异常。

  malloc分配内存失败时返回NULL。

  4. 自定义类型

  new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。

  malloc/free是库函数,只能动态的申请和释放内存,无法强制要求其做自定义类型对象构造和析构工作。

  5. 重载

  C++允许重载new/delete操作符,特别的,布局new的就不需要为对象分配内存,而是指定了一个地址作为内存起始区域,new在这段内存上为对象调用构造函数完成初始化工作,并返回此地址。

  而malloc不允许重载。

  6. 内存区域

  new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。

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

  而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。

  自由存储区不等于堆,如上所述,布局new就可以不位于堆中。

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/92021.html

(0)
上一篇 2024年 5月 30日
下一篇 2024年 5月 30日

相关推荐

  • spider是什么意思翻译成中文_spider的意思是什么意思啊

    spider是什么意思翻译成中文_spider的意思是什么意思啊spider是什么意思_spider用英语怎么说_spider的翻译_spider翻译成_spider的中文意思_spider怎么读,spider的读音,spider的用法,spider的例句全部蜘蛛This is the Berlin Olympic venue, is not lik

    激活谷笔记 2024年 5月 25日
  • split slit 区别_slit和split的区别

    split slit 区别_slit和split的区别slice splice split 的区别最近在做处理字符串和数组的js编程题,总是容易混淆slice、splice和split这三个js内置函数,所以今天不如来写篇文章好好地区分这几个函数。 一、slice对数组或者字符串进行部分截取&

    激活谷笔记 2024年 5月 31日
  • vmware虚拟机安装教程_win11不支持vmware虚拟机

    vmware虚拟机安装教程_win11不支持vmware虚拟机虚拟机安装win11方法最近遇到一些反馈,说虚拟机只能支持安装到windows 10 版本,windows 11则无法安装,安装时会进行报错,问小编该如何安装。今天将步骤分享给大家,不懂的地方会进行一定的解答

    2024年 5月 8日
  • 计算机组成的图片_计算机组成系统图

    计算机组成的图片_计算机组成系统图图解计算机6大系统结构+主板拆解分析(思维导图+实物图)依托于“计算电磁学”的发展,电磁CAE技术已经深刻的改变了硬件设计流程,但是仅仅依赖于CAE商用软件的仿真计算以及设计师的手动调参或者相对低层次的自动扫参功能,越来越难以支撑起卓越的

    激活谷笔记 2024年 5月 30日
  • pcie 怎么看_pcie怎么看3.0还是4.0

    pcie 怎么看_pcie怎么看3.0还是4.0笔记本加装固态硬盘,选pcie3.0还是4.0?再用着红米游戏本2022款,机子自带pcie4.0,512g的固态硬盘.想加装一个1t的固态硬盘拿来随便玩玩游戏选pcie4.0还是3.0就可以?那个性价比高一点?选哪个品牌靠谱一点?作为固态存储行业的多年老兵,我来回答这个问题吧。红

    2024年 6月 2日
  • 二叉排序树一定是满二叉树嘛对吗_二叉排序树一定是满二叉树嘛对吗

    二叉排序树一定是满二叉树嘛对吗_二叉排序树一定是满二叉树嘛对吗【音频带背】数据结构考前必背简答题系列(二):树与二叉树抓码计算机考研将陆续推出数据结构、计网、计组、操作系统的必背文本及音频,文本由抓码专业团队的学长姐精心梳理,单篇推送后会推出PDF合集,帮助正在冲刺备考的你提高学习效率。此外,抓码运营小组将根据你的需求制作音频或视

    2024年 5月 21日
  • html表单登录界面_html表单登录页面

    html表单登录界面_html表单登录页面使用Html做一个简单的登陆页面目录绪论一、新建一个html项目二、制作整体框架三、使用CSS进行修饰四、更新内容绪论html作为一个常用的前端语言,使用的人群范围是很大的;如果你想要成为一个前端工程师

    2024年 5月 27日
  • Goland激活2024.1.2(GoLand激活码激活成功教程2024-06最新激活教程【永久激活,亲测有效】)

    Goland激活2024.1.2(GoLand激活码激活成功教程2024-06最新激活教程【永久激活,亲测有效】)

    2024年 6月 7日
  • spring怎么读英语_plant怎么读音发音英语怎么说

    spring怎么读英语_plant怎么读音发音英语怎么说plant用作动词 (v.) plant in( v.+prep. )

    激活谷笔记 2024年 5月 14日
  • anaconda配置python环境很慢_装了anaconda还需要装python吗

    anaconda配置python环境很慢_装了anaconda还需要装python吗单细胞转录组分析太难了,哪位大神能够带带我这位小白啊 ,好多问题都搜不到答案 ?已解决了已解决了时空简讯第38期。近年来,我们见证了单细胞及空间多组学(尤其是空间转录组)技术的爆炸式增长和进步,随之产生了大量的生物

    2024年 5月 9日
  • 铃木dl250摩托车参数_铃木DL250摩托车参数

    铃木dl250摩托车参数_铃木DL250摩托车参数豪爵dl250摩托车参数 豪爵铃木dl250跑长途怎么样吉姆尼参考价:未上市查看参配底价购置税优惠经销商报价车主点评6月17日,豪爵铃木DL250在京上市。标准版售价29880元,ABS版售价31880元,均配有三个

    2024年 5月 31日
  • html表格常用属性_html表单常用属性

    html表格常用属性_html表单常用属性html与表格(table)相关的属性<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD

    激活谷笔记 2024年 5月 31日
关注微信