Sobes.tech
Junior — Middle

Welche Arten von Speicher gibt es und wie interagieren sie miteinander?

sobes.tech KI

Antwort von AI

In Go (Golang) sind die wichtigsten Arten von Speicher und ihre Interaktion wie folgt:

  • Stack (Stapel) — speichert lokale Variablen von Funktionen. Der Stapel wird schnell zugewiesen und beim Aufruf und Rückkehr aus Funktionen freigegeben.

  • Heap (Heap) — wird für die dynamische Speicherzuweisung verwendet, z.B. für Objekte, die länger leben als die aktuelle Funktion. Go hat einen Garbage Collector, der die Bereinigung des Heaps verwaltet.

  • Globale/statische Speicher — für globale Variablen und Konstanten.

Interaktion:

  • Beim Aufruf einer Funktion werden lokale Variablen auf dem Stack platziert.
  • Wenn eine Variable länger leben soll, kann der Compiler sie "ins Heap verschieben" (Escape-Analysis).
  • Der Garbage Collector gibt den Speicher im Heap automatisch frei, wenn Objekte unerreichbar werden.

Beispiel:

func foo() *int {
    x := 10
    return &x // x "entkommt" in den Heap, da ein Zeiger zurückgegeben wird
}

Hier wird die Variable x im Heap platziert, damit der Zeiger nach Verlassen der Funktion gültig bleibt.