Junior — Middle
În ce situații compiler-ul rezervă automat memorie în zona dinamică (heap)?
sobes.tech AI
Răspuns de la AI
În compilatorul Go, memoria pe heap este alocată automat în următoarele situații:
- Când o variabilă trebuie să trăiască mai mult decât timpul de execuție al funcției în care este declarată (analiza de escape). De exemplu, dacă adresa unei variabile locale este returnată dintr-o funcție sau stocată într-o structură care trăiește mai mult.
- Dacă variabila este prea mare pentru stivă sau dimensiunea sa nu este cunoscută în timpul compilării.
Exemplu:
func create() *int {
x := 10
return &x // variabila x "scapă" pe heap, deoarece se returnează un pointer
}
Aici, variabila x va fi plasată pe heap pentru ca pointerul să rămână valid după ieșirea din funcție. Compilatorul analizează codul (analiza de escape) și decide unde să aloce memoria.