目录
1、为什么要清除 .bss 段
.bss 段保存的是 未被初始化 或者 初始化为0 的全局/静态变量。在编译器看来,这些东西是多余的,实际并不会给他们分配空间。因此,编译生成目标文件的时候,这些东西并不会被加载到目标文件中。目的是降低目标文件所占空间大小。

万一我们用到了这些未被初始化的全局变量(如自增),因为没有被初始化,可能会引发一些问题。这里清除 .bss 段其实就是在给 .bss 段中的变量清零,相当于给那些没有被初始化的变量赋予初值。
存储器会记下 bss 段的起始位置 __bss_start 和结束位置 __bss_end,以便于清零,等到运行程序的时候,bss 段会被加载到内存。


文章讨论了.bss段在程序中的作用,它是未初始化或初始化为0的全局/静态变量的存储区域。清除.bss段是为了避免使用未初始化的变量导致的问题,并介绍了如何在汇编中利用lds链接脚本记录并清零.bss段的内容。
最低0.47元/天 解锁文章
1130

被折叠的 条评论
为什么被折叠?



