其中,存储在内存段中的全局变量和静态变量
where is the global and static variables stored in memory segment?
在我的链接器脚本中,起始地址和大小如下所示:
code start:90400000
code end: 90a00000
data start:90b00000, size 3MB
bss start: 91200000, size 1MB
但是当我声明一个全局变量时,它的地址是:910bead0
它应该驻留在.bss
部分中,但它在其他地方,我什至没有在链接器脚本中指定。谁能告诉我发生了什么?
你没有指出你正在使用什么系统等,但传统上:初始化的全局数据进入data
;未初始化的全局数据进入bss
(初始化为0)。 当你写这样的东西时:
int x = 0;
系统不同:有些人认识到初始化等价于零初始化(即当你不指定初始化时会发生什么),并会把它放在bss
;其他人只会看到有一个初始化的事实,并将其放在data
中。
相关文章:
- 不同作用域中的静态变量和全局变量
- 静态 constexpr 全局变量
- 将静态全局变量声明为内联有什么意义吗?
- 全局变量中的静态常量与常量
- 没有参数的递归,也没有静态或全局变量
- 类中的静态成员变量和C++中的全局变量有什么区别?
- 获取 constexpr 全局变量(不是静态成员)的链接器符号
- 如何使用GDB跟踪Main()之前初始化的所有静态全局变量
- C++ 给出编译器错误,将一个(静态)常量全局变量设置为另一个静态常量变量
- 如何在任何其他全局变量或静态变量之前创建/构造类实例
- 使用静态和避免单例模式声明全局变量
- C 中不允许静态/全局变量
- C 11指定静态/全局变量的构造顺序
- C++:如何从静态函数写入全局变量
- DLL libarry 中相同的静态和全局变量
- 静态全局变量初始化顺序
- 递归计算在不使用静态局部变量,全局变量或静态函数的情况下,在递归函数中发生的环数
- 我可以在此处使用全局变量,而不是静态变量
- 在没有全局或静态变量的情况下配置Bison和Flex
- 变量类型全局、静态、局部和自动