2012-02-29 33 views
0

在linux中,我使用size命令得到了以下信息,用於示例C++程序。目標文件和可執行文件之間各種字段大小的差異

text data  bss  dec  hex filename 
1908  304  152 2364  93c test 
346  4  1  351  15f test.o 

我已閱讀的輸出是大小;文本是實際的代碼,bss包含未初始化的全局變量以及作爲已初始化和未初始化段的添加的數據。我的問題是爲什麼目標文件和可執行文件中的大小不同,特別是在文本中,因爲源代碼在內存中很常見?如果沒有全局變量,爲什麼會顯示bss的大小?

的示例代碼文件中包含有如下:

#include <iostream> 

using namespace std; 

    int main() 
    { 
     cout << "Hello World!" << endl ; 

     return 0; 
    } 

謝謝!

回答

1

尺寸不同,因爲您的目標文件只包含您的代碼。鏈接文件還包括編譯器C++框架(即調用main所需的代碼)以及與各種標準庫(至少C和C++標準庫)的鏈接。

+0

謝謝。這就是爲什麼它顯示全局變量的大小,即使沒有全局變量?由於編譯器/鏈接器插入的信息? – Izza 2012-02-29 04:53:18

+0

是的。您應該嘗試反編譯代碼以獲得更好的想法。值得注意的是,你將擁有一個「cout」和一個「cin」全局... – 2012-02-29 04:59:35

相關問題