memorias
O gerenciamento de memória é uma das áreas mais fundamentais da programação de computador. Em muitas linguagens de script, não é necessário se preocupar com o modo como a memória é gerenciada, mas isso não torna esse gerenciamento menos importante. Conhecer as capacidades e limitações do gerenciador de memória é essencial para a programação efetiva. Na maioria das linguagens de sistemas como C e C++, é necessário fazer o gerenciamento de memória. Este artigo abrange os fundamentos das práticas de gerenciamento de memória manual, semi-automático e automático.
Voltando à programação da linguagem assembly da Apple II, o gerenciamento de memória não era motivo de preocupação. Basicamente, você tinha todo o sistema executado. A quantidade de memória que o sistema tinha, você também tinha. Não era necessário se preocupar com o quanto de memória o sistema tinha, pois todo computador era igual. Assim, se seus requisitos de memória fossem estáticos, apenas um intervalo de memória seria escolhido para usar e o usava.
No entanto, mesmo nesse simples computador você ainda tinha problemas, especialmente o fato de não saber o quanto de memória cada parte do seu programa precisaria. Se você tinha espaço limitado e necessidades de memória variáveis, precisaria então atender, de alguma forma, a estes requisitos:
Determinar se possuía memória suficiente para processar dados
Obter uma seção de memória da memória disponível
Retornar uma seção de memória novamente ao conjunto de memórias disponíveis para que ela pudesse ser utilizada por outras partes do programa ou por outros programas
As bibliotecas que implementam esses requisitos são chamadas de alocadores, pois são responsáveis pela alocação e desalocação de memória. Quanto mais dinâmico um programa é, mais o gerenciamento de memória se torna um problema e mais importante se torna sua escolha quanto ao alocador de memória. Observemos os diferentes métodos disponíveis para gerenciar