Junior — Middle
Como é que a utilização da pilha muda durante a execução do programa?
sobes.tech IA
Resposta da IA
Durante a execução do programa, a pilha é usada para armazenar informações sobre chamadas de funções, variáveis locais e controlo do fluxo de execução.
Quando uma função é chamada, um quadro (contexto de chamada) é colocado na pilha, que contém:
- O endereço de retorno (para onde voltar após a função terminar)
- Variáveis locais
- Parâmetros da função
Ao terminar a função, o seu quadro é removido da pilha.
Em Go, a pilha cresce e encolhe dinamicamente conforme necessário, permitindo um uso eficiente da memória. Por exemplo, ao chamar uma função recursiva, a pilha expande-se, e ao sair das funções, ela encolhe.
Exemplo:
func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}
func main() {
result := factorial(5)
fmt.Println(result) // 120
}
Aqui, cada chamada a factorial adiciona um novo quadro à pilha, que é removido ao retornar da função.