Sobes.tech
Junior — Middle

Pode explicar a diferença entre a pilha e a memória no heap?

sobes.tech IA

Resposta da IA

A pilha e o heap são duas áreas diferentes de memória usadas em C# para armazenar dados, e diferem na forma de gestão e finalidade.

  • Pilha — é uma região de memória onde são armazenadas variáveis locais e parâmetros de métodos. Funciona segundo o princípio LIFO (último a entrar, primeiro a sair). A memória na pilha é alocada e liberada automaticamente ao entrar e sair das funções, o que é muito rápido. Na pilha, armazenam-se valores de tipos primitivos e referências a objetos.

  • Heap — é uma região de memória para a alocação dinâmica de objetos. Quando um objeto é criado com new, a memória é alocada no heap. A gestão de memória no heap é feita pelo coletor de lixo (Garbage Collector), que libera objetos não utilizados. O heap é mais flexível, mas as operações de alocação e liberação de memória são mais lentas do que na pilha.

Exemplo:

void Example()
{
    int x = 10; // x é armazenado na pilha
    MyClass obj = new MyClass(); // obj é uma referência na pilha, o objeto está no heap
}

Aqui, x é uma variável local na pilha, e obj é uma referência na pilha apontando para um objeto no heap.