「コンパイラはメモリ内の変数にスペースを割り当てる」と本に書かれているのはなぜですか。それを行うのは実行可能ファイルではありませんか?たとえば、次のプログラムを作成すると、
#include <iostream>
using namespace std;
int main()
{
int foo = 0;
cout<<foo;
return 0;
}
それをコンパイルし、実行可能ファイル (program.exe とする) を取得します。ここで、program.exe を実行すると、この実行可能ファイル自体が変数 foo にスペースを割り当てるようにコマンドを実行します。そうじゃない?本が「コンパイラはこれを行う...これを行う」と言い続ける理由を説明してください。実際には、コンパイルされた実行可能ファイルはそれを行います。
この質問に別の関連する質問を追加すると、なぜsizeof
コンパイル時演算子と呼ばれるのですか? それは実際には実行時演算子ではありませんか?