0
サンプルのC++プログラムでは、linuxのsizeコマンドを使用して次の情報を得ました。オブジェクトファイルと実行可能ファイルの間のさまざまなフィールドのサイズの差
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;
}
はありがとうございました!
ありがとうございました。グローバル変数がなくてもグローバル変数のサイズを表示しているのはなぜですか?コンパイラ/リンカの挿入情報のため? – Izza
はい。コードをデコンパイルして、より良いアイデアを得るようにしてください。特に、あなたは "勘違い"と "犯罪"のグローバルを持っているでしょう... –