Sobes.tech
Senior

Dove saranno posizionati l'array e la mappa: sull'heap o sullo stack?

sobes.tech AI

Risposta dell'AI

In Go, gli array vengono generalmente allocati nello stack se la loro dimensione è nota in fase di compilazione e non sono troppo grandi. Questo perché gli array sono valori di dimensione fissa. Tuttavia, se un array viene passato come puntatore o utilizzato in una struttura allocata sull'heap, allora anche l'array sarà sull'heap.

In Go, una mappa è un tipo di riferimento, implementato internamente tramite un puntatore a una struttura dati sull'heap. Pertanto, una mappa è sempre allocata sull'heap, anche se la variabile mappa è dichiarata localmente.

Esempio:

func esempio() {
    var arr [10]int       // array sullo stack
    m := make(map[int]int) // mappa sull'heap
    _ = arr
    _ = m
}