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.