🎯 Alocação de Memória
Em poucas palavras
Alocação de memória refere-se ao processo pelo qual todos os programas gerenciam e utilizam a memória de um computador enquanto estão em execução.
📝 Notas e Desenvolvimento
🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas:
📚 Referências e Fontes
Links Externos
Citações Diretas
📂 Outros Conteúdos Preservados
Alocação de Memória (Complemento)
Este processo envolve:
- Reservar espaço: Adquirir blocos de memória para armazenar dados e instruções que o programa precisa.
- Gerenciar uso: Acompanhar quais partes da memória estão em uso e quais estão livres.
- Liberar espaço: Liberar memória que não é mais necessária para que possa ser reutilizada por outras partes do programa ou por outros programas.
Diferentes linguagens de programação lidam com a alocação de memória de várias maneiras:
- Algumas linguagens usam coleta de lixo (garbage collection), que identifica e recupera automaticamente a memória que não está mais em uso.
- Outras linguagens exigem que o programador aloque e libere explicitamente a memória.
- Linguagens como Rust usam um sistema de propriedade (ownership) com regras verificadas pelo compilador para gerenciar a memória, garantindo eficiência sem sobrecarga em tempo de execução.
Principais Diferenças Entre Stack e Heap
| Parâmetro | Stack | Heap |
|---|---|---|
| Alocação/Desalocação | Automática (pelo compilador) | Manual (pelo programador) ou Coletada por Lixo |
| Velocidade | Mais Rápida | Mais Lenta |
| Tamanho | Fixo, menor (limitado) | Flexível, maior (limitado pela memória do sistema) |
| Tempo de Vida | Automático, ligado ao escopo da função | Manual (ou GC), persiste até ser desalocado |
| Acesso | Direto, contíguo, amigável ao cache | Indireto (via Ponteiros), potencialmente fragmentado |
| Principal Problema | Stack Overflow | Vazamentos de Memória, Fragmentação, OutOfMemoryError |
| Segurança | Thread-safe (dados acessados pela thread proprietária) | Menos thread-safe (dados visíveis para todas as threads) |
| Flexibilidade | Tamanho fixo, não flexível | Redimensionamento possível, flexível |
| Usado Para | Variáveis locais, chamadas de função | Objetos, grandes estruturas de dados, arrays dinâmicos |
Exemplo de Alocação de Memória Stack e Heap

:: Referência :: What is Ownership? - The Rust Programming Language