Junior — Middle
In welke situaties reserveert de compiler automatisch geheugen in het dynamische gebied (heap)?
sobes.tech AI
Antwoord van AI
In de Go-compiler wordt het geheugen op de heap automatisch toegewezen in de volgende situaties:
- Wanneer een variabele langer moet leven dan de uitvoeringstijd van de functie waarin deze is gedeclareerd (escape-analyse). Bijvoorbeeld, als het adres van een lokale variabele wordt geretourneerd vanuit een functie of wordt opgeslagen in een structuur die langer leeft.
- Als de variabele te groot is voor de stack of als de grootte ervan tijdens compilatie niet bekend is.
Voorbeeld:
func create() *int {
x := 10
return &x // de variabele x "ontsnapt" naar de heap, omdat er een pointer wordt geretourneerd
}
Hier wordt de variabele x op de heap geplaatst zodat de pointer geldig blijft na het verlaten van de functie. De compiler analyseert de code (escape-analyse) en beslist waar geheugen te alloceren.