C++内存分区模型
创始人
2024-02-27 21:46:05
0

参考至:C + + memory partition model (programs.team)

一、内存分区简介

1.1 内存分区

在执行c++程序的过程中,内存会被大致分为四块区域:

1> 代码区域:存储二进制代码,由操作系统管理。

2> 全局区域:存储全局变量、静态变量、常量。

3> 栈区域:存储局部变量、参数值等。由编译器自动分配和释放。

4> 堆区域:该区域由程序员开辟和释放。如果程序员未释放相应的内存,在程序结束的时候操作系统会将其回收释放。

1.2 内存分区的意义

 数据存储在不同的区域拥有不同的生命周期,使我们的程序灵活易用。

二、程序运行各阶段的内存分配

2.1 程序运行前

 在程序编译完成后,会生成一个可执行文件。在程序执行之前,主要分为两块区域:

1> 代码区域:存储由CPU执行的机器指令。

代码区域是共享的、只读的。共享的目的是为了在频繁执行程序的时候只有一份代码在内存中;只读的目的是为了防止程序意外的修改其机器指令。

2> 全局区域:全局和静态变量存储在此区域。

该区域还包含了存储着字符串常量和其他常量的常量区域。

该区数据会在程序结束时被操作系统释放。

2.2 程序运行期间

 程序运行期间,主要是栈区和堆区在不断的开辟和释放:

1> 栈区域:编译器分配和释放用来存储函数内的局部变量和函数参数。

切记不可返回函数内的栈区局部变量地址到函数外,因为该区的生命周期是不可控的、短暂的,会出现非法操作。

2> 堆区域:程序员手动开辟和释放,如果程序员不对其进行释放,程序结束后,操作系统会对其释放。

在堆区开辟内存使用运算符:new

在堆区释放内存使用运算符:delete

一直不释放堆区无效内存,会导致堆区内存不断增大、内存碎片化、内存泄漏,影响效率。

2.3 程序运行结束后

操作系统会释放未释放的内存。

三、关于变量的一些知识

/** @brief 有以下程序,用以说明变量的一些知识*//**@brief 定义 向程序表明变量的类型和名字并分配地址* 或者向程序表明函数的名字、参数、返回值以及具体实现* 只要分配了地址,就是定义!* 定义只可发生一次,即相同类型、名字的变量只可定义一次*///定义,定义一个全局变量,类型为int,并且将其初始化为10,存储在全局区域
int num = 10;//定义,定义一个函数,参数有一个,类型为int,该参数会开辟在栈区域;返回值为bool类型
bool Func(int a)
{//定义,定义一个局部变量,类型为int,会开辟在栈区域int num;return true;
}//定义,定义一个静态变量,类型为double,存储在全局区域(静态区)
static double num2;/**@brief 声明 向程序表明变量的类型和名字或者向程序表面函数的名字、参数、返回值*///声明,不是定义,声明了在其他文件定义了全局变量num,在此文件可以直接使用
extern int num;//声明,不是定义,声明了在其他文件定义了全局函数max,在此文件可以直接使用
extern double max(double d1,double d2);

以上整理,可能存疑有错,仅用于个人知识总结,请谨慎参考。如有错误,欢迎指正。

相关内容

热门资讯

能不能给我《猫武士》第一本的第... 能不能给我《猫武士》第一本的第一个啊?呼唤野性的第一章如果能给我很多的话就更好啦!回答好我就给你一串...
高手们请帮忙翻译下下面的文章,... 高手们请帮忙翻译下下面的文章,急用,谢谢了!翻译成英文?
落跑甜心大结局是什么啊,具体的 落跑甜心大结局是什么啊,具体的男主角和女主角在一个没人的山坡举行婚礼仪式,仪式结束后,藏在山坡下的亲...
关于冬风的诗句 关于冬风的诗句千里黄云白日曛,北风吹雁雪纷纷。(唐·高适《别董大》)
林如海的介绍 林如海的介绍林如海,是清代小说《红楼梦》中的人物,巡盐御史,娶妻贾敏,林黛玉之父。
南阳有几个监狱,具体位置在哪,... 南阳有几个监狱,具体位置在哪,盗墓被判了大概五年,会在南阳那个监狱?哥,难道你就是传说中的摸金校尉。
有一本游戏小说主角是一个监狱的... 有一本游戏小说主角是一个监狱的人,还是秘密组织的人他得到一个神器叫沙盗王的戒指,上面有一段话是什么英...
形容不团结的成语有哪些? 形容不团结的成语有哪些?1、一盘散沙,、各奔东西2、,四分五裂、拳中掿沙3、七支八搭、勾心斗角4、自...
我们都一样年轻又彷徨中因为读了... 我们都一样年轻又彷徨中因为读了这本书抑郁症好了的是那一篇?保险杠铃声多多关照了我在家级的多吃点东西都...
小说炎景熙和陆沐擎最后在一起了... 小说炎景熙和陆沐擎最后在一起了吗熙带着花环和志焕一起拍了一张两个人的照片,那也是最后的一张照片,至此...
求有关化肥的绕口令。 求有关化肥的绕口令。1、初入江湖:化肥会挥发2、小有名气:黑化肥发灰,灰化肥发黑3、名动一方:黑化肥...
小喜鹊是怎样起床的 小喜鹊是怎样起床的早上大喜鹊从早上四点开始捕食喂小鸟,一直到晚上,早上小喜鹊和大喜鹊都醒了自身的生物...
贝贝小南瓜的生长资料? 贝贝小南瓜的生长资料?贝贝南瓜需要提前将种子浸泡一夜。幼苗定植一个月后,需要对土壤进行深耕,施肥。每...
苗族姑娘怎么画? 苗族姑娘怎么画? 画清楚,画好一些 找专业画家画啊,我就知道 , 兄弟壁画 挺好的,中国最大的了
求一篇科幻小说,男主被流放到一... 求一篇科幻小说,男主被流放到一颗有人形生物的星球,不断杀掉长相和地球人不同的外星生物男主被流放到一颗...
柳树怎么画 柳树怎么画柳树怎么画
快穿文女主姓宋叫什么歌,男主第... 快穿文女主姓宋叫什么歌,男主第一个位面姓林,叫什么不知道了,里面还有一个位面是腹黑王妃的?男主是那个...
哑舍同人文 哑舍同人文最好是上传的TAT~~~没有写哑舍同人文哦,怨念。。。。。。。。不过玄色大神在赤锁吧写了一...
陆墨宸简汐和刘雨彤的小说叫什么... 陆墨宸简汐和刘雨彤的小说叫什么名字宠婚:总裁在上
加法是什么意思? 加法是什么意思? 很高兴告诉你!加法: 把两个数合并成一个数的运算 把两个小数合并成一源粗带个小...