C++全局变量内存分配和初始化顺序

本文详细解析了C++中全局变量与局部变量在内存分配及初始化过程中的规律。介绍了局部变量遵循代码顺序分配内存的特点;针对全局变量,阐述了初始化与未初始化变量的不同分配逻辑及其按字母顺序排列的现象,并探讨了多文件环境中全局变量初始化的不确定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++全局变量内存分配和初始化顺序

1.局部变量规则

局部变量是在栈空间上,内存分配的顺序和代码的顺序是一致的

2.全局变量规则

2.1 初始化的全局变量

一般来说,对于初始化的全局变量,编译器遇到之后知道这是一个定义,会马上分配空间,例如:
int ib = 10;
int ia = 10;
这个分配的结果是:ia的地址在ib后面

2.2 未初始化的全局变量

对于未初始化的全局变量,编译器遇到之后不知道是声明还是定义,所以要在扫描完所有代码之后才能决定,这个时候编译器会读符号表,然后看哪些变量没有分配空间,因为符号表是字母顺序的,所以这些变量的内存分配也是按照字母顺序来的,例如:
int ib;
int ia;
这个分配的结果是:ia的地址在ib前面

3.多文件全局变量规则

对于全局变量而言,除了在同一个文件定义的全局对象的初始化,是按照定义次序来进行的之外,其他全局或静态变量之间的初始化次序没有任何保障的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值