Junior — Middle
Melyik memória részében helyezkedik el az adathalmaz futás közben?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a tömbök a kontextustól függően különböző memória területeken helyezkedhetnek el:
- Ha egy tömböt helyi változóként deklarálunk egy függvényen belül, és nem lép túl a határain, általában a veremben (stack) helyezkedik el.
- Ha a tömb dinamikusan jön létre (például
newsegítségével vagy egy szelet (slice), amely egy tömbre hivatkozik), akkor a halomban (heap) helyezkedik el.
Fontos megérteni, hogy a Go szeletei (slice) olyan struktúrák, amelyek egy mutatót tartalmaznak egy tömbre, egy hosszúságot és egy kapacitást. Maga a tömb a halomban vagy a veremben lehet, attól függően, hogy hol és hogyan lett létrehozva.
Példa:
func példa() {
var arr [5]int // a veremben helyezkedik el
slice := make([]int, 5) // a halomban lévő tömb
_ = arr
_ = slice
}