2017-06-21 53 views
2

我在一些網站上看到這一點,其結果很驚訝:爲什麼bss在這種情況下有一些價值?

#include <stdio.h> 

int main(void) 
{ 
    return 0; 
} 

當上面的代碼檢查每個部分內存使用size

$ gcc memory-layout.c -o memory-layout 
$ size memory-layout 
text  data  bss  dec  hex filename 
960  248   8  1216  4c0 memory-layout 

這裏, 沒有任何全局或靜態變量,bss的大小顯示爲8。我沒有得到這8個字節的使用情況?

回答

1

您正在查看完整可執行程序的段大小:源代碼的目標模塊鏈接到標準庫啓動代碼和必要的庫支持函數,如exit。您看到的databss的數字可能是由這些模塊定義的全局對象造成的。特別要注意的是,main函數難以證明960字節的代碼。

生成只是一個目標文件,並運行對size

$ gcc -c memory-layout.c 
$ size memory-layout.o 
相關問題