Sobes.tech
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.