Junior — Middle
Aké typy pamäte existujú a ako medzi sebou komunikujú?
sobes.tech AI
Odpoveď od AI
V jazyku Go (Golang) sú hlavné typy pamäte a ich vzájomná interakcia nasledovné:
-
Zásobník (Stack) — ukladá lokálne premenné funkcií. Zásobník sa rýchlo prideľuje a uvoľňuje pri volaní a návrate z funkcií.
-
Hromada (Heap) — používa sa na dynamické prideľovanie pamäte, napríklad pre objekty, ktoré žijú dlhšie ako aktuálna funkcia. Go má garbage collector, ktorý spravuje čistenie hromady.
-
Globálna/statická pamäť — pre globálne premenné a konštanty.
Interakcia:
- Pri volaní funkcie sú lokálne premenné umiestnené na zásobník.
- Ak má premenná žiť dlhšie, kompilátor ju môže "presunúť" na hromadu (escape analysis).
- Garbage collector automaticky uvoľňuje pamäť na hromade, keď objekty prestanú byť dostupné.
Príklad:
func foo() *int {
x := 10
return &x // x "unikne" na hromadu, pretože sa vracia ukazovateľ
}
Tu bude premenná x umiestnená na hromadu, aby ukazovateľ zostal platný po opustení funkcie.