Почему книги говорят: «Компилятор выделяет пространство для переменных в памяти»?

Почему книги говорят: «Компилятор выделяет пространство для переменных в памяти». Разве это не исполняемый файл, который делает это? Я имею в виду, например, если я напишу следующую программу,

#include <iostream>
using namespace std;

int main()
{
   int foo = 0;
   cout<<foo;
   return 0;
}

и скомпилировать его, и получить исполняемый файл (пусть это будет program.exe), теперь, если я запустлю program.exe, этот исполняемый файл сам даст команду выделить место для переменной foo. Не так ли? Пожалуйста, объясните, почему книги продолжают говорить: «компилятор сделает это ... сделайте это», тогда как на самом деле скомпилированный исполняемый файл делает это.

Добавив еще один связанный вопрос к этому вопросу, почемуsizeof называется оператором времени компиляции? Разве это не оператор во время выполнения?

Ответы на вопрос(7)

Ваш ответ на вопрос