O que é alocação de memória dinâmica?
A alocação de memória dinâmica, também chamada de alocação de memória baseada em Heap, é um tipo de gerenciamento de memória que é fortemente contrastado pela alocação de memória estática. Na alocação dinâmica da memória, o programador informa ao computador exatamente quanta memória alocar para cada programa e quanto tempo segurar a memória. Isso resolve muitos dos problemas que ocorrem na alocação estática da memória, como o uso excessivo de memória e programas paralisados. Embora resolva muitos problemas, se o programador esquecer de dizer a memória para despejar, a memória dinâmica pode se tornar um problema.
Computadores, por padrão, use a alocação de memória estática. Isso significa que a memória se mantém nos programas quando eles são usados, mesmo que o programa não esteja mais sendo usado ou se a memória mantida se tornar perigosa ou um obstáculo para o desempenho. Por exemplo, se o usuário parar de executar um programa que leva 2 megabytes (MB) em uma máquina de 3 MB e um segundo programa precisa de outros 2 MB, o segundo programa não funcionará. Isso é porque não há enMemória de Ogh deixada no computador para o outro programa.
Com a alocação de memória estática, o usuário ou programador não pode especificar a quantidade de memória que deseja armazenados, nem o programador pode dizer à memória estática para despejar a memória para liberar recursos. É por isso que os usuários avançados geralmente usam a alocação de memória dinâmica. O programador é capaz de controlar tudo sobre a memória, incluindo quanto tempo para manter os recursos.
Por exemplo, o programador pode definir a alocação de memória dinâmica para manter apenas 1 MB, ou menos, o que economizaria memória de sistema suficiente para permitir que outros programas sejam abertos. Isso pode ser feito porque a memória estática geralmente se mantém em tudo sobre o programa, enquanto a memória dinâmica permite que os programadores o defina em um valor mais baixo que mantém alguns dados, mas não tudo. Ao mesmo tempo, a memória estática ainda será necessária e pode ser definida neste esquema de alocação.
Um problema em potencial com a alocação de memória dinâmica - que raramente entra em jogo - é que a memória dinâmica pode preencher se o programador esquecer de definir um valor de tempo. Se nenhum valor de tempo estiver definido, diferentemente da memória estática que acabará por liberar a memória, a memória dinâmica se manterá nas informações. Se o programa tiver um aplicativo de despejo de lixo e a maioria, ele será ativado após um certo período de tempo para limpar a memória. Ainda é prática melhor definir um valor de tempo para a alocação de memória.