Sobes.tech
Senior

Wo befinden sich das Array und die Map — im Heap oder im Stack?

sobes.tech KI

Antwort von AI

In Go werden Arrays in der Regel auf dem Stack abgelegt, wenn ihre Größe zur Kompilierungszeit bekannt ist und sie nicht zu groß sind. Das liegt daran, dass Arrays Wertetypen mit fester Größe sind. Wenn ein Array jedoch als Zeiger übergeben wird oder in einer Struktur verwendet wird, die auf dem Heap alloziert wird, befindet sich das Array ebenfalls auf dem Heap.

In Go ist eine Map ein Referenztyp, der intern durch einen Zeiger auf eine Datenstruktur im Heap implementiert ist. Daher befindet sich eine Map immer auf dem Heap, selbst wenn die Map-Variable lokal deklariert ist.

Beispiel:

func beispiel() {
    var arr [10]int       // Array auf dem Stack
    m := make(map[int]int) // Map auf dem Heap
    _ = arr
    _ = m
}