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.