Por que os livros dizem “o compilador aloca espaço para variáveis na memória”?
Por que os livros dizem "o compilador aloca espaço para variáveis na memória". Não é o executável que faz isso? Quero dizer, por exemplo, se eu escrever o seguinte programa,
#include <iostream>
using namespace std;
int main()
{
int foo = 0;
cout<<foo;
return 0;
}
e compilá-lo, e obter um executável (let it be program.exe), agora, se eu executar o program.exe, este arquivo executável irá comandar para alocar algum espaço para a variável foo. Não vai? Por favor, explique por que os livros continuam dizendo: "o compilador fará isso ... faça aquilo", enquanto, na verdade, o executável compilado faz isso.
Adicionando outra questão relacionada a essa pergunta, por quesizeof
chamado operador de compilação? Não é realmente um operador de tempo de execução?