可執行文件(目標文件)的格式:
在 Windows 下都按照 PE-COFF 格式存儲,Linux 下按照 ELF 格式存儲。
程序源代碼被編譯後主要分爲兩種段:程序指令和程序數據。
代碼段屬於程序指令,而數據段和 .bss 段屬於數據段。
- .data 段保存的是已經初始化了的全局變量和局部靜態變量。
- .rodata 段保存的是隻讀數據,一般是程序裏面的只讀變量和字符串常量。
- .bss 段保存的是未初始化的全局變量和局部靜態變量。
static int x1 = 0;
// x1 爲 0,可以認爲 x1 未被初始化(缺省值爲 0),存放在 .bss 中
// 這樣可以節省空間,因爲 .bss 不佔磁盤空間
static int x2 = 1;
// x2 存放在 .data 中