1

次のプログラムを検討してください。

#include <stdio.h>

int main(void)
{
    return 0;
}

次のコマンドを実行すると:

gcc メモリ レイアウト.c -o メモリ レイアウト    
サイズメモリレイアウト

出力は次のようになります。

テキスト データ bss dec hex ファイル名    
960 248 8 1216 4c0 メモリ レイアウト

テキスト領域にはプログラムの実行可能な命令が含まれているため、出力でテキスト領域のサイズが 960 と表示されるのはなぜですか。これは、数えることができる限り、命令のサイズに対して大きすぎます。

4

1 に答える 1

3

その理由はおそらく、プログラムの実際のmain開始は実際には関数ではなく、リンク段階で追加されたコードの一部であるためです。このコードは、ライブラリをセットアップし、BSSセグメントをクリアし、関数を呼び出す前にその他の初期化を行いますmain。から戻ったときにすべてが適切にクリーンアップされていることを確認するためのコードもありますmain

于 2012-06-26T13:24:54.243 に答える