top of page

Pilha e Heap: Onde os Dados Ficam na Memória?

Quando um programa roda, ele precisa guardar informações temporárias para fazer os cálculos e processar os dados. Mas você já parou para pensar onde essas informações ficam guardadas? No C#, elas podem ser armazenadas em dois lugares principais: a pilha (stack) e o heap.


Vamos entender isso de uma forma simples.


O que é a Pilha (Stack)?

A pilha é como uma pilha de pratos:

🍽️ Quando você coloca um prato novo, ele vai por cima.🍽️ Quando precisa pegar um prato, sempre tira o de cima primeiro.🍽️ Se precisar pegar um prato mais antigo, primeiro tem que remover os que estão por cima.

A memória funciona assim na pilha. Ela guarda os dados rapidamente e os remove na mesma ordem. Como as informações entram e saem de maneira organizada, a pilha é super rápida.


Exemplo de algo que vai para a pilha:

  • Variáveis simples, como int, double, bool, etc.

  • Estruturas (structs) que não precisam de muito espaço.

  • Chamadas de funções (os dados que uma função usa enquanto está rodando).


Exemplo em C#:

	void Exemplo()
    {
        int numero = 10; // Guardado na pilha
    }

O número 10 foi armazenado na pilha. Assim que a função Exemplo terminar, ele desaparece da memória automaticamente.


Vantagens da Pilha:

✔ Rápida: O acesso aos dados é quase imediato.✔ Automática: O C# gerencia sozinho, sem precisar do Garbage Collector.


Desvantagens:

  • O espaço na pilha é limitado.

  • Os dados são apagados assim que não são mais necessários.


O que é o Heap?

Agora, imagine um depósito grande cheio de caixas:

📦 Você pode colocar caixas em qualquer lugar do depósito.📦 Para encontrar uma caixa específica, precisa procurar pelo seu endereço.📦 Se esquecer de remover as caixas que não usa mais, o depósito pode ficar cheio e desorganizado.

O heap funciona assim: ele pode guardar muitas informações, mas leva mais tempo para acessar os dados, porque precisa procurar onde eles estão armazenados.


Exemplo de algo que vai para o heap:

  • Objetos criados com new.

  • Strings (string).

  • Classes (class).


Exemplo em C#:

class Pessoa
{
    public string Nome;
}

public class UsandoHeap
{
    void Exemplo()
    {
        Pessoa p = new Pessoa(); // Guardado no heap
        p.Nome = "João";
    }
}

O objeto Pessoa foi criado no heap, então ele permanece na memória até que o Garbage Collector remova. Isso faz com que o programa gaste mais tempo gerenciando esses dados.


Vantagens do Heap:

✔ Pode armazenar muita informação sem limite de tamanho.✔ Os dados não desaparecem automaticamente quando uma função termina.


Desvantagens:

  • Mais lento do que a pilha, porque precisa buscar os dados.

  • Depende do Garbage Collector para limpar a memória quando um dado não é mais usado.


Resumo Rápido

Característica

Pilha (Stack)

Heap

Velocidade

Muito rápida 🚀

Mais lenta 🐢

Tamanho

Pequeno

Grande

Gerenciamento

Automático

Feito pelo Garbage Collector

Onde é usado?

Variáveis locais, structs pequenas

Objetos grandes, classes

Se o programa precisar guardar um dado rápido e temporário, ele usa a pilha.Se precisar armazenar algo por mais tempo, usa o heap.


 
 

Posts recentes

Ver tudo

O que é uma struct no C#?

No C#, existem dois tipos principais para armazenar dados: classes (class)  e estruturas (struct) . Ambas permitem criar objetos, mas...

bottom of page