Sobes.tech
Junior — Middle

Welke soorten geheugen bestaan er en hoe werken ze samen?

sobes.tech AI

Antwoord van AI

In Go (Golang) zijn de belangrijkste typen geheugen en hun interactie als volgt:

  • Stack (Stapel) — slaat lokale variabelen van functies op. De stack wordt snel toegewezen en vrijgegeven bij het aanroepen en terugkeren uit functies.

  • Heap (Heap) — wordt gebruikt voor dynamische geheugenallocatie, bijvoorbeeld voor objecten die langer leven dan de huidige functie. Go heeft een garbage collector die het opruimen van de heap beheert.

  • Globaal/statisch geheugen — voor globale variabelen en constanten.

Interactie:

  • Bij het aanroepen van een functie worden lokale variabelen op de stack geplaatst.
  • Als een variabele langer moet leven, kan de compiler deze "verplaatsen" naar de heap (escape analysis).
  • De garbage collector vrijwaart automatisch geheugen op de heap wanneer objecten ontoegankelijk worden.

Voorbeeld:

func foo() *int {
    x := 10
    return &x // x "vlucht" 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.