Sobes.tech
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.