Sobes.tech
Junior — Middle

Cum se schimbă utilizarea stivei în timpul rulării programului?

sobes.tech AI

Răspuns de la AI

În timpul execuției programului, stiva este utilizată pentru a stoca informații despre apelurile de funcții, variabilele locale și controlul fluxului de execuție.

Când este apelată o funcție, se plasează un cadru (context de apel) pe stivă, care conține:

  • Adresa de returnare (unde să se revină după finalizarea funcției)
  • Variabile locale
  • Parametrii funcției

La finalizarea funcției, cadrul acesteia este eliminat din stivă.

În Go, stiva crește și se micșorează dinamic după nevoie, ceea ce permite utilizarea eficientă a memoriei. De exemplu, la apelarea unei funcții recursive, stiva se extinde, iar la ieșirea din funcții, se contractă.

Exemplu:

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    result := factorial(5)
    fmt.Println(result) // 120
}

Aici, fiecare apel al factorial adaugă un nou cadru pe stivă, care este eliminat la revenirea din funcție.