Junior — Middle
In what situations does automatic memory allocation occur on the stack during program execution?
sobes.tech AI
Answer from AI
In Go, stack memory allocation occurs automatically for local variables that:
- Have limited scope (for example, declared inside a function).
- Do not go beyond the function (not passed by reference or stored on the heap).
The Go compiler analyzes variable usage and decides where to place them: on the stack or on the heap. If a variable does not "escape" the function, it is placed on the stack, which is faster and more efficient.
Example:
func foo() {
x := 10 // x is allocated on the stack
fmt.Println(x)
}
If a variable is returned from a function or stored in a closure, it will be allocated on the heap.
Thus, automatic stack allocation occurs for local variables with limited scope and lifetime, optimizing the program's performance.