Junior — Middle
Jaké typy paměti existují a jak spolu vzájemně komunikují?
sobes.tech AI
Odpověď od AI
V jazyce Go (Golang) jsou hlavní typy paměti a jejich vzájemné působení následující:
-
Zásobník (Stack) — ukládá lokální proměnné funkcí. Zásobník je rychle přidělen a uvolněn při volání a návratu z funkcí.
-
Hromada (Heap) — používá se pro dynamické přidělení paměti, například pro objekty, které žijí déle než aktuální funkce. Go má garbage collector, který spravuje čištění hromady.
-
Globální/statická paměť — pro globální proměnné a konstanty.
Interakce:
- Při volání funkce jsou lokální proměnné umístěny na zásobník.
- Pokud má proměnná žít déle, kompilátor ji může "přesunout" na hromadu (escape analysis).
- Garbage collector automaticky uvolňuje paměť na hromadě, když objekty přestanou být dosažitelné.
Příklad:
func foo() *int {
x := 10
return &x // x "unikne" na hromadu, protože je vrácen ukazatel
}
Zde bude proměnná x umístěna na hromadě, aby ukazatel zůstal platný po opuštění funkce.