.NET gerencia memória automaticamente por meio de um coletor de lixo (GC) — ele aloca objetos no heap gerenciado e recupera aqueles que não são mais alcançáveis, para que você não precise liberar memória manualmente. Entender o GC (geracional, a divisão stack/heap e IDisposable) é importante para desempenho e correção.
Stack vs heap
Stack → value types (locals), method frames; fast, automatically freed when scope ends.
Heap → reference type objects (class instances); managed by the GC.
A reference variable lives on the stack but points to its object on the heap.
