生活资讯
【C++】内存管理
2024-12-14 09:22  浏览:70

说明:

  1. 栈又叫堆栈–非静态局部变量/函数参数/返回值等等,栈是向下增长的。
  2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下
  3. 堆用于程序运行时动态内存分配,堆是可以上增长的。
  4. 数据段–存储全局数据和静态数据。
  5. 代码段–可执行的代码/只读常量。

从上面这个我们可以看出,我们对内存的操作绝大部分是在堆区进行的,那么对于C语言的内存管理函数malloc . calloc , realloc 是否还记得

 

malloc函数的使用方法
calloc函数的使用方法
realloc函数的使用方法

因为C语言和C++可以兼容,所以C语言的方式在C++中依然可以使用,但是有时候会很麻烦,所以C++提出了自己的内存管理方式通过 new 和 delete 进行动态内存管理

 

要注意new和delete要匹配使用
new —— delete
new[ ] —— delete[ ]

当然若要申请二维数组,和C语言一样麻烦,分为数组指针和指针数组两种

 
 
 

这里最大的区别是对于自定义类型,new会调用自定义类型的构造函数,delete会调用自定义类型的析构函数

 

从上面我们可以看到一些属性的面孔,malloc,free这是C语言开辟和销毁空间的方式

 
 
 
 

如果是申请内置类型的空间,new/delete 和 malloc/free基本相同
不同的地方在
new/delete是申请单个空间,new[ ]/delete[ ]是申请连续空间
new申请失败会抛异常,malloc申请失败会返回NULL

<1>new的原理
1、调用operator new申请空间
2、调用构造函数,对申请的空间进行构造

<2>delete原理
1、在空间中调用析构函数,将对象中的空间进行清理
2、调用operator delete 函数释放对象空间

<3>new T[N] 的原理
1、调用operator new[ ]函数,在函数中调用N次operator new函数完成对对象空间的申请
2、在申请的空间上N次调用构造函数

<4>delete[ ]的原理
1、在释放空间上调用N次析构函数
2、调用operator delete[ ]函数,在函数中调用N次operator delete函数完成对空间的释放

 
 
 
 

定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象

new (place_address) type
new (place_address) type (initializer_list)
place_address 是一个指针
initializer_list 是类型的初始化列表

定位new表达式一般和内存池配合使用,因为内存池中数据为初始化,所以需要通过new的定位表达式进行显示构造函数初始化

    以上就是本篇文章【【C++】内存管理】的全部内容了,欢迎阅览 ! 文章地址:http://yejunbin01.xhstdz.com/xwnews/347.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://yejunbin01.xhstdz.com/mobile/ , 查看更多   
最新文章
6.如何利用SEO赚取美金
众所周知,SEO(Search Engine Optimization)搜索引擎优化,是一种获取流量的方式,利用搜索引擎规则提高网站在相关搜索内的自
欧陆国际:外贸SEO应该怎么做
外贸SEO应该怎么做?外贸行业有两种线上模式:自己搭建网站、借助于B2B平台开网店,自建网站不受平台限制,推广方式也比较自由,
各个网站及搜索引擎收录地址大全
搜索引擎网站收录地址大全 【点此提交您的搜索引擎】360搜索引擎登录入口:http://info.so.360.cn/site_submit.html即刻
国内自动驾驶汽车排名
国产自动驾驶汽车有哪几款?国内自动驾驶汽车排名随着大家对于自动驾驶需求的日益增加,随着自动驾驶技术的进步,慢慢的诞生了越
只会外链分享?那你可能错过了jBox“共享”这座宝库
jBox交大云盘交大人的专属“聚宝盘”自助扩容、高速传输和市面上所有网盘一样,jBox可通过外链实现文件分享,这或许也是SJTUer目
21个Python爬虫项目代码,微信、淘宝、豆瓣、知乎、微博等
今天为大家整理了23个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心,所有链接指向GitHub
【flagship搜狗手机输入法下载】三星flagship搜狗手机输入法12.1.1免费下载
搜狗输入法,拥有超大中文词库,输入更加精准,智能。搜狗智能旺仔带你用表达,斗图,妙语,输入更加有趣。******特色功能******
免费行情网站app入口:免费行情神器!随时随地掌握市场动态的入口-你值得拥有!
投资市场瞬息万变,但你是否因为信息滞后错失过机会?又或者为了寻找靠谱的行情工具在茫茫软件海洋中迷失?今天要向你推荐一款绝对
2024年10大AI生成PPT工具推荐(12月)
在数字化时代,AI驱动的PPT生成工具正在彻底改变我们制作和展示PPT的方式。这些工具利用人工智能技术简化创建流程,提升视觉吸引
7995wx鲁大师视频:探究鲁大师如何帮助您全面提升计算机性能!
在如今高速发展的科技时代,计算机已成为我们日常生活中不可或缺的重要工具。无论是工作、学习,还是娱乐,电脑的性能直接影响着
相关文章