Почему книги говорят: "компилятор выделяет пространство для переменных в памяти". Разве это не исполняемый файл? Я имею в виду, например, если я пишу следующую программу,
#include <iostream>
using namespace std;
int main()
{
int foo = 0;
cout<<foo;
return 0;
}
и скомпилировать его и получить исполняемый файл (пусть это будет program.exe), теперь, если я запустил program.exe, этот исполняемый файл сам будет командовать для выделения некоторого пространства для переменной foo. Не так ли? Пожалуйста, объясните, почему книги продолжают говорить: "компилятор сделает это... сделайте это", тогда как на самом деле это скомпилированный исполняемый файл.
Добавляя к этому вопросу другой связанный вопрос, почему sizeof
называется оператором времени компиляции? Разве это не оператор времени выполнения?