Na programação, é necessário armazenar dados computacionais. Esses dados são armazenados na memória. Os locais de memória para armazenar dados na programação de computadores são conhecidos como variáveis. As variáveis têm um tipo de dados específico. Portanto, a memória é alocada para executar os programas. A memória pode ser alocada de duas maneiras. Eles são alocação de memória estática e alocação de memória dinâmica. Na alocação de memória estática, uma vez que a memória é alocada, ela não pode ser alterada. A memória não é reutilizável. Mas na alocação dinâmica de memória, uma vez que a memória é alocada, ela pode ser alterada. o diferença chave entre alocação de memória estática e dinâmica é que na alocação estática de memória, uma vez que a memória é alocada, o tamanho da memória é fixo, enquanto na alocação dinâmica de memória, uma vez que a memória é alocada, o tamanho da memória pode ser alterado.
1. Visão geral e principais diferenças
2. O que é alocação de memória estática
3. O que é alocação dinâmica de memória
4. Semelhanças entre alocação de memória estática e dinâmica
5. Comparação lado a lado - alocação de memória estática versus dinâmica na forma de tabela
6. Resumo
Na alocação de memória estática, a memória alocada é fixa. Depois que a memória é alocada, ela não pode ser alterada. A memória não pode ser aumentada ou diminuída. Por exemplo, na linguagem C, se o programador gravar int x, o que significa que a variável pode armazenar um valor inteiro. O número de bytes depende do computador. Também pode haver matrizes. Por exemplo. int x [5]; Este x é um array que pode armazenar uma sequência de dados do mesmo tipo. Pode armazenar cinco elementos inteiros. Não pode armazenar mais de cinco elementos. Em Java, uma matriz pode ser criada como, int arr [] = new int [5]; A matriz 'arr' pode armazenar 5 valores inteiros e não pode armazenar mais do que isso.
Figura 01: Métodos de alocação de memória
Na alocação de memória estática, uma vez que as variáveis são alocadas, elas permanecem permanentes. Após a alocação inicial, o programador não pode redimensionar a memória. Se o programador alocou uma matriz que pode armazenar 10 elementos, não é possível armazenar valores mais do que a quantidade especificada. Se o programador inicialmente alocou uma matriz que pode conter 10 elementos, mas precisava apenas de 5 elementos, haverá um desperdício de memória. Essa memória não é mais necessária, mas também não é possível reutilizá-la. A alocação de memória estática é fixa, mas a implementação é simples e fácil, além de rápida.
Às vezes é necessário alterar o tamanho da memória. Portanto, a memória pode ser alocada dinamicamente. Dependendo das inserções e exclusões dos elementos de dados, a memória pode aumentar ou diminuir. É conhecido como alocação dinâmica de memória.
Na linguagem C, arquivo de cabeçalho stdlib.h, existem quatro funções para alocação dinâmica de memória. Eles são calloc, malloc, realloc e grátis. A função malloc () aloca um tamanho necessário de bytes e retorna um ponteiro nulo, apontando o primeiro byte da memória alocada. A função calloc () aloca um tamanho necessário de bytes e inicializa-os para zero. Em seguida, retorna um ponteiro nulo para a memória. A função free () é usada para realocar a memória alocada. E a função realloc pode modificar a memória alocada anteriormente. Depois de alocar memória usando calloc ou malloc, o tamanho da memória é fixo, mas eles podem ser aumentados ou diminuídos usando a função realloc. Em Java, as coleções podem ser usadas para alocação dinâmica de memória.
A principal vantagem da alocação dinâmica de memória é que ela economiza memória. O programador pode alocar memória ou liberar a memória conforme necessário. A memória pode ser realocada durante a execução e pode liberar a memória quando não é necessária. A alocação dinâmica de memória também é eficiente que a alocação de memória estática. Uma desvantagem é que a implementação da alocação dinâmica de memória é complexa.
Alocação de memória estática versus dinâmica | |
A alocação de memória estática é um método de alocação de memória e, uma vez que a memória é alocada, ela é corrigida. | A alocação dinâmica de memória é um método de alocação de memória e, uma vez que a memória é alocada, ela pode ser alterada. |
Modificação | |
Na alocação de memória estática, não é possível redimensionar após a alocação inicial. | Na alocação dinâmica de memória, a memória pode ser minimizada ou maximizada de acordo. |
Implementação | |
A alocação de memória estática é fácil de implementar. | A alocação dinâmica de memória é complexa de implementar. |
Rapidez | |
Na memória estática, a execução da alocação é mais rápida que a alocação dinâmica de memória. | Na memória dinâmica, a execução da alocação é mais lenta que a alocação de memória estática. |
Utilização de memória | |
Na alocação de memória estática, não é possível reutilizar a memória não utilizada. | A alocação dinâmica de memória permite reutilizar a memória. O programador pode alocar mais memória quando necessário. Ele pode liberar a memória quando necessário. |
Na programação, alocação de memória estática e alocação de memória dinâmica são dois mecanismos para alocar memória. A diferença entre a alocação de memória estática e dinâmica é que, na alocação de memória estática, uma vez que a memória é alocada, o tamanho da memória é fixo, enquanto na alocação de memória dinâmica, uma vez que a memória é alocada, o tamanho da memória pode ser alterado. O programador pode decidir se a memória deve ser estática ou dinâmica, dependendo do aplicativo.
Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre alocação de memória estática e dinâmica
1.Kayal, Somnath. "SOMNATH KAYAL." Diferença entre alocação de memória estática e alocação de memória dinâmica, 1 de janeiro de 1970. Disponível aqui
2.tutorialspoint.com. "Matrizes em C." O ponto. Disponivel aqui
3.nareshtechnologies. Memória estática vs memória dinâmica | Tutorial de linguagem C, Naresh i Technologies, 19 de setembro de 2016. Disponível aqui