Sobes.tech
Senior

Unde vor fi localizate array-ul și map-ul — pe heap sau pe stivă?

sobes.tech AI

Răspuns de la AI

În Go, array-urile sunt de obicei plasate pe stivă dacă dimensiunea lor este cunoscută în timpul compilării și nu sunt prea mari. Acest lucru se datorează faptului că array-urile sunt valori de dimensiune fixă. Cu toate acestea, dacă un array este transmis ca pointer sau utilizat într-o structură alocată pe heap, atunci și array-ul va fi pe heap.

Map în Go este un tip de referință, implementat intern printr-un pointer către o structură de date pe heap. Prin urmare, map-ul se află întotdeauna pe heap, chiar dacă variabila map este declarată local.

Exemplu:

func exemplu() {
    var arr [10]int       // array pe stack
    m := make(map[int]int) // map pe heap
    _ = arr
    _ = m
}