BSS
二進位文件術語
BSS是是Unix鏈接器產生的未初始化數據段。
是“Block Started by Symbol”的縮寫,意為“以符號開始的塊”。
BSS是Unix鏈接器產生的未初始化數據段。其他的段分別是包含程序代碼的“text”段和包含已初始化數據的“data”段。BSS段的變數只有名稱和大小卻沒有值。此名後來被許多文件格式使用,包括PE。“以符號開始的塊”指的是編譯器處理未初始化數據的地方。BSS節不包含任何數據,只是簡單的維護開始和結束的地址,以便內存區能在運行時被有效地清零。BSS節在應用程序的二進位映象文件中並不存在。
在採用段式內存管理的架構中(比如intel的80x86系統),bss段(Block Started by Symbol segment)通常是指用來存放程序中未初始化的全局變數的一塊內存區域,一般在初始化時bss 段部分將會清零。bss段屬於靜態內存分配,即程序一開始就將其清零了。
比如,在C語言之類的程序編譯完成之後,已初始化的全局變數保存在.data 段中,未初始化的或初始化為0全局變數保存在.bss 段中。
text和data段都在可執行文件中(在嵌入式系統里一般是固化在鏡像文件中),由系統從可執行文件中載入;而bss段不在可執行文件中,由系統初始化。