Sobes.tech
Junior — Middle

Ako sa mení používanie zásobníka počas behu programu?

sobes.tech AI

Odpoveď od AI

Počas behu programu sa zásobník sa používa na ukladanie informácií o volaniach funkcií, miestnych premenných a riadení toku vykonávania.

Keď je funkcia volaná, na zásobník sa vloží rámec (kontext volania), ktorý obsahuje:

  • Adresu návratu (kam sa má vrátiť po ukončení funkcie)
  • Miestne premenné
  • Parametre funkcie

Po ukončení funkcie sa jej rámec odstráni zo zásobníka.

V jazyku Go zásobník dynamicky rastie a znižuje sa podľa potreby, čo umožňuje efektívne využívanie pamäte. Napríklad, pri rekurzívnom volaní funkcie sa zásobník rozšíri, a pri návrate z funkcií – sa zmenší.

Prí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
}

Tu každý volanie factorial pridá nový rámec na zásobník, ktorý sa pri návrate z funkcie odstráni.