🎯 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


📚 Referências e Fontes

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âmetroStackHeap
Alocação/DesalocaçãoAutomática (pelo compilador)Manual (pelo programador) ou Coletada por Lixo
VelocidadeMais RápidaMais Lenta
TamanhoFixo, menor (limitado)Flexível, maior (limitado pela memória do sistema)
Tempo de VidaAutomático, ligado ao escopo da funçãoManual (ou GC), persiste até ser desalocado
AcessoDireto, contíguo, amigável ao cacheIndireto (via Ponteiros), potencialmente fragmentado
Principal ProblemaStack OverflowVazamentos de Memória, Fragmentação, OutOfMemoryError
SegurançaThread-safe (dados acessados pela thread proprietária)Menos thread-safe (dados visíveis para todas as threads)
FlexibilidadeTamanho fixo, não flexívelRedimensionamento possível, flexível
Usado ParaVariáveis locais, chamadas de funçãoObjetos, 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