计算机系统篇之链接(10):.bss、.data 和 .rodata section 之间的区别"/>
计算机系统篇之链接(10):.bss、.data 和 .rodata section 之间的区别
计算机系统篇之链接(10):.bss、.data 和 .rodata section 之间的区别
Author:stormQ
Friday, 08. May 2020 10:20PM
Section 名称 | 区别1:用途不同 | 区别2:在目标文件中占用的空间不同 |
---|---|---|
.rodata | 用于维护只读数据,比如:常量字符串、带 const 修饰的全局变量和静态变量等 | 在目标文件中占用空间 |
.data | 用于维护初始化的且初始值非0的全局变量和静态变量(不带 const 修饰) | 在目标文件中占用空间 |
.bss | 用于维护未初始化的或初始值为0的全局变量和静态变量(不带 const 修饰) | 不占用目标文件的空间 |
注:
-
对于未初始化的全局变量和静态变量的初始值在运行期会被赋为0。从而,达到 .bss section 用于减少目标文件的大小的目的。
-
临时变量(即局部非静态变量)既不出现在
.data
中,也不出现在.bss
中。它由运行期栈维护。 -
严格地讲,gcc 将 C 程序(以 .c 结尾的源文件)中的未初始化的全局变量标记为
COMMON<
更多推荐
计算机系统篇之链接(10):.bss、.data 和 .rodata section 之间的区别
发布评论