Sobes.tech
Junior — Middle

A programozási nyelvben az adatstruktúrát a veremmemóriába kell helyezni?

sobes.tech MI

Válasz az MI-től

C#-ban egy struktúra (struct) általában a veremben (stack) helyezkedik el, ha helyi változóként van egy módszerben. Ez azonban nem kötelező:

  • Ha a struktúra egy osztály (referenciatípus) mezője, akkor az objektummal együtt a heapen tárolódik.
  • Ha a struktúrát csomagolás (boxing) során másoljuk, akkor a heapre kerül.

Ezért a struktúra memóriahelye a használati kontextustól függ, nem magától a struktúrától.

Példa:

struct Point { public int X, Y; }

void Method() {
    Point p = new Point(); // p a veremben tárolódik
    MyClass obj = new MyClass();
    obj.PointField = p; // PointField az objektumon belül a heapen tárolódik
}

class MyClass {
    public Point PointField;
}