Sobes.tech
Junior — Middle

Kako se menja korišćenje steka tokom rada programa?

sobes.tech АИ

Одговор од АИ

Tokom izvršavanja programa, stek se koristi za skladištenje informacija o pozivima funkcija, lokalnim promenljivima i kontroli toka izvršenja.

Kada se pozove funkcija, na stek se postavlja okvir (kontekst poziva), koji sadrži:

  • Adresu povratka (gde da se vrati nakon završetka funkcije)
  • Lokalni promenljivi
  • Parametre funkcije

Po završetku funkcije, njen okvir se uklanja sa steka.

U Go jeziku, stek dinamički raste i smanjuje se prema potrebama, što omogućava efikasno korišćenje memorije. Na primer, pri rekurzivnom pozivu funkcije, stek će se proširiti, a pri izlasku iz funkcija – smanjiti.

Primer:

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

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

Ovde, svaki poziv factorial dodaje novi okvir na stek, koji se uklanja pri povratku iz funkcije.