C++ 常量区 静态区 堆区 栈区

本文介绍了C++程序运行时的内存分区,包括代码区、常量区、静态区和动态区(堆区、栈区)。详细讨论了static、const和static const修饰的变量在不同区域的存储和初始化方式,强调了它们在内存管理、读写权限及初始化时机上的区别。
摘要由CSDN通过智能技术生成

C++ 常量区 静态区 堆区 栈区

参考博客

C++中类的变量可以通过static、const、static const来修饰,不同的修饰在不同的情况下表示不同的含义。

程序运行期间的内存分区:
1.代码区:存放CPU指令码。
2.常量区:存放只读常量,该区只读,不可写。
3.静态区:存放静态变量,该区在程序编译完成后就决定了其大小,程序运行期间该区的大小不会变,该区可读写。
4.动态区:分为堆区和栈区,程序运行期间其大小处于动态变化中。处于该区的变量也会时而被创建时而被销毁。

static关键字:
经过static修饰的变量会作为类的属性而不是实体属性存在。

static修饰的变量作为程序运行时的静态变量,存在于内存的静态区,静态区的数据初始化工作由操作系统在加载完程序后执行main函数前进行。操作系统在加载完程序后,将常量区中存放的变量初值复制给静态变量,完成其初始化。

static修饰的变量通过int ClassName::value=1这种方式进行初始化。此时不再需要static 关键字。程序运行期间也可以对变量进行赋值操作。

const关键字:
经过const修饰的属性,顾名思义是指常量。

const修饰的属性仍然属于实体属性,所以其初始化工作需要由构造函数的初始化列表中完成,而且也只能在构造函数的初始化列表中初始化。运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值