Why do books say, “the compiler allocates space for variables in memory”?

前端 未结 7 1592
我在风中等你
我在风中等你 2020-12-31 10:54

Why do books say, \"the compiler allocates space for variables in memory\". Isn\'t it the executable which does that? I mean, for example, if I write the following program

相关标签:
7条回答
  • 2020-12-31 11:53

    The compiler generates machine instructions and works out what memory address local variables will occupy. Each local variable is given an address relative to the top of the stack, eg foo would be assumed to be at memory address stack_pointer. If you had a variable foo2 it would be placed at address stack_pointer + 4 where 4 is the size of an int.

    When the local variable foo is accessed, the compiler will substitute the address held in stack_pointer. The hardware has a special stack_pointer register which always points to the top of the current stack.

    The compiler knows what size each variable is because it is responsible for looking at struct or class declarations and working out how it is laid out in memory. So sizeof is known at compile time and is treated as a constant expression. Primitive types like int are known to be of a certain size, eg sizeof(int) is 4.

    0 讨论(0)
提交回复
热议问题