Sobes.tech
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 new segí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
}