Sobes.tech
Junior — Middle

Milyen memória típusok léteznek, és hogyan működnek együtt?

sobes.tech MI

Válasz az MI-től

A Go (Golang) nyelvben a memória fő típusai és azok kölcsönhatásai a következők:

  • Verem (Stack) — a függvények helyi változóit tárolja. A verem gyorsan allokálódik és szabadul fel a függvényhívások során.

  • Heap (Heap) — dinamikus memóriafoglalásra szolgál, például olyan objektumok számára, amelyek hosszabb ideig élnek, mint a jelenlegi függvény. A Go rendelkezik szemétgyűjtővel, amely kezeli a heap tisztítását.

  • Globális/statikus memória — globális változók és konstansok számára.

Interakció:

  • Függvényhíváskor a helyi változók a verembe kerülnek.
  • Ha egy változónak hosszabb életre van szüksége, a fordító "kiszökés-elemzéssel" áthelyezheti a heapbe.
  • A szemétgyűjtő automatikusan felszabadítja a heapen lévő memóriát, amikor az objektumok elérhetetlenné válnak.

Példa:

func foo() *int {
    x := 10
    return &x // x "elmenekül" a heapbe, mivel mutatóként visszaadódik
}

Ebben az esetben a x változó a heapbe kerül, hogy a mutató érvényes maradjon a függvény kilépése után is.