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;
}