Sobes.tech
Junior — Middle

Jak se během běhu programu mění využití zásobníku?

sobes.tech AI

Odpověď od AI

Během běhu programu se zásobník používá k ukládání informací o volání funkcí, místních proměnných a řízení toku programu.

Když je volána funkce, na zásobník se vloží rámec (kontext volání), který obsahuje:

  • Adresu návratu (kam se vrátit po dokončení funkce)
  • Místní proměnné
  • Parametry funkce

Po dokončení funkce je její rámec odstraněn ze zásobníku.

V jazyce Go se zásobník dynamicky zvětšuje a zmenšuje podle potřeby, což umožňuje efektivní využití paměti. Například při volání rekurzivní funkce se zásobník rozšiřuje, a při návratu z funkcí se zmenšuje.

Příklad:

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

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

Zde každý volání factorial přidá nový rámec na zásobník, který je při návratu z funkce odstraněn.