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.