Junior — Middle
U kojim situacijama kompajler automatski rezerviše memoriju u dinamičkoj oblasti (heap)?
sobes.tech АИ
Одговор од АИ
U Go kompilatoru, memorija na hrpi (heap) se automatski dodeljuje u sledećim situacijama:
- Kada promenljiva treba da živi duže od vremena izvršenja funkcije u kojoj je deklarisana (analiza bekstva). Na primer, ako se adresa lokalne promenljive vraća iz funkcije ili se čuva u strukturi koja traje duže.
- Ako je promenljiva prevelika za stek ili njen veličina nije poznata tokom kompilacije.
Primer:
func create() *int {
x := 10
return &x // promenljiva x "beži" na hrpu, jer se vraća pokazivač
}
Ovde će promenljiva x biti smeštena na hrpi, kako bi pokazivač ostao validan nakon izlaska iz funkcije. Kompilator analizira kod (analiza bekstva) i odlučuje gde da dodeli memoriju.