Junior — Middle
In quali situazioni il compilatore riserva automaticamente memoria nell'area dinamica (heap)?
sobes.tech AI
Risposta dell'AI
Il compilatore Go assegna automaticamente la memoria nell'heap nelle seguenti situazioni:
- Quando una variabile deve vivere più a lungo del tempo di esecuzione della funzione in cui è dichiarata (analisi di escape). Ad esempio, se l'indirizzo di una variabile locale viene restituito da una funzione o memorizzato in una struttura che vive più a lungo.
- Se la variabile è troppo grande per lo stack o la sua dimensione è sconosciuta durante la compilazione.
Esempio:
func create() *int {
x := 10
return &x // la variabile x "escapa" nell'heap, poiché viene restituito un puntatore
}
Qui, la variabile x sarà collocata nell'heap affinché il puntatore rimanga valido dopo l'uscita dalla funzione. Il compilatore analizza il codice (analisi di escape) e decide dove allocare la memoria.