Sobes.tech
Senior

Gdzie będą znajdować się tablica i mapa — na stercie czy na stosie?

sobes.tech AI

Odpowiedź od AI

W Go, tablice zazwyczaj umieszczane są na stosie, jeśli ich rozmiar jest znany na etapie kompilacji i nie są zbyt duże. Wynika to z faktu, że tablice są wartościami o stałym rozmiarze. Jednak jeśli tablica jest przekazywana jako wskaźnik lub używana w strukturze alokowanej na stercie, wtedy również tablica będzie na stercie.

Mapy w Go są typem odwołania, zaimplementowanym wewnętrznie przez wskaźnik na strukturę danych na stercie. Dlatego mapy zawsze znajdują się na stercie, nawet jeśli zmienna mapy jest zadeklarowana lokalnie.

Przykład:

func przykład() {
    var arr [10]int       // tablica na stosie
    m := make(map[int]int) // mapa na stercie
    _ = arr
    _ = m
}