Sobes.tech
Junior — Middle

Da li se strukturalni objekti mogu smeštati u dinamičku memoriju (heap)?

sobes.tech АИ

Одговор од АИ

U C# strukturama (struct) su tipovi vrednosti koji se obično smeštaju na stek. Međutim, objekti struktura takođe mogu biti na hrpi ako su deo objekta klase ili ako je struktura upakovana u objekat (boxing).

Na primer, ako se struktura koristi kao polje klase, ona se čuva na hrpi zajedno sa objektom klase:

struct Point { public int X, Y; }

class Shape {
    public Point Position; // struktura unutar objekta klase
}

var shape = new Shape(); // objekat klase na hrpi, struktura Position takođe na hrpi

Takođe, ako se struktura upakuje u objekat, biće smeštena na hrpi:

Point p = new Point { X = 1, Y = 2 };
object boxed = p; // upakivanje strukture u objekat, smeštanje na hrpi

Dakle, same strukture su obično na steku, ali mogu biti na hrpi u kontekstu objekata klasa ili pri boxing-u.