Junior — Middle
Quais são as formas de alocar tipos significativos na memória gerenciada (heap)?
sobes.tech IA
Resposta da IA
Em C#, os tipos de valor (struct) geralmente são colocados na pilha, mas também podem ser colocados no heap gerenciado de várias maneiras:
-
Aninhamento em um tipo de referência — se o tipo de valor for um campo de uma classe (tipo de referência), ele é armazenado dentro do objeto no heap.
-
Uso de tipos de valor
boxed— ao fazer boxing de um tipo de valor, ele é copiado para um objeto no heap. -
Uso de
newpara criar uma instância de struct dentro de uma classe ou array — arrays de tipos de valor e campos struct dentro de classes são colocados no heap.
Exemplo:
struct Point { public int X, Y; }
class Container {
public Point p; // Point é armazenado no heap como parte do objeto Container
}
Container c = new Container(); // objeto c e campo p no heap
object o = c.p; // boxing: cópia de p no heap como objeto
Assim, os tipos de valor podem estar no heap se fizerem parte de um tipo de referência ou se estiverem empacotados.