0

サンプルのc++プログラムについて、Linuxでsizeコマンドを使用して次の情報を取得しました。

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

出力はサイズであることを読みました。textは実際のコードであり、bssには初期化されていないグローバル変数が含まれ、データは初期化されたセグメントと初期化されていないセグメントの両方の追加として含まれます。私の質問は、ソースコードがメモリ内で一般的であるため、オブジェクトファイルと実行可能ファイル、特にテキストでサイズが異なるのはなぜですか?グローバル変数がない場合、bssのサイズが表示されるのはなぜですか?

サンプルコードファイルには以下が含まれます。

#include <iostream>

using namespace std;

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

      return 0;
   }

ありがとう!

4

1 に答える 1

1

オブジェクトファイルにはコードのみが含まれているため、サイズは異なります。リンクされたファイルには、コンパイラC ++フレームワーク(つまり、mainを呼び出すために必要なコード)とさまざまな標準ライブラリ(少なくともCおよびC ++標準ライブラリ)へのリンクが含まれています。

于 2012-02-29T04:47:28.917 に答える