C の学習中にいくつかの実験を行っていると、奇妙なことに出くわしました。これは私のプログラムです:
int main(void) {sleep(5);}
コンパイルすると、実行可能ファイルのサイズは 8496 バイトになります (26 バイトのソースと比較して!) これは、実行可能ファイルにスリープが呼び出され、呼び出すための命令が記述されているため理解できます。もう 1 つの注意点は、スリープがないと、実行可能ファイルが 4312 バイトになることです。
int main(void) {}
私の主な質問は、最初のプログラムが実行されたときに何が起こるかです。私は clang を使用してコンパイルし、Mac OS X を使用して実行しています。その結果 (Activity Monitor によると)、プログラムは 504KB の「実メモリ」を使用します。プログラムがわずか 4KB なのになぜこんなに大きいのですか? 実行可能ファイルがメモリにロードされていると想定していますが、スリープ コール以外は何もしていません。プログラムが 5 秒間スリープするのに 500KB が必要なのはなぜですか?
ちなみに私がスリープを使っているのは、そもそもActivity Monitorを使ってメモリの使用量を把握できるようにするためです。
単純な好奇心からお願いします、乾杯!