# Pilhas na alocação de memória > [!NOTE] Pilhas na alocação de memória > A pilha é uma região de memória usada para **alocação de memória estática**. Ela opera no princípio **Último a Entrar, Primeiro a Sair (LIFO)**, muito parecido com uma pilha de pratos onde você adiciona e remove pratos do topo. **:: Referência ::** [Stack vs Heap Memory Allocation | GeeksforGeeks](https://www.geeksforgeeks.org/stack-vs-heap-memory-allocation/) # Notas - **Alocação:** A memória é alocada e desalocada automaticamente pelo compilador. Quando uma função é chamada, um "quadro de pilha" é empurrado para a pilha. Este quadro contém variáveis locais, argumentos de função e o endereço de retorno. Quando a função é concluída, seu quadro de pilha é removido. Este processo é chamado de **empurrar para a pilha** e **remover da pilha**. - **Velocidade:** Empurrar e remover da pilha é muito rápido porque o alocador de memória nunca precisa procurar um lugar para armazenar novos dados; o local está sempre no topo. - **Tamanho:** A pilha tem um tamanho conhecido, fixo e relativamente pequeno (tipicamente alguns megabytes). Todos os dados armazenados na pilha devem ter um tamanho conhecido e fixo em tempo de compilação. - **Tempo de Vida:** Variáveis na pilha têm um tempo de vida limitado e automático. Elas são destruídas assim que a função à qual pertencem retorna. Isso também é conhecido como **alocação de memória temporária**. - **Conteúdo:** Armazena principalmente variáveis locais, parâmetros de função e endereços de retorno. - **Segurança:** É geralmente considerado **thread-safe** porque os dados armazenados na pilha só podem ser acessados pelo thread proprietário. - **Problema Comum:** Se muitas chamadas de função ou muitos dados excederem a capacidade da pilha, isso resulta em um **erro de estouro de pilha**. **:: Referência ::** [Stack vs Heap Memory Allocation | GeeksforGeeks](https://www.geeksforgeeks.org/stack-vs-heap-memory-allocation/)