Sistema
Prof. Luciana Rocha Cardoso
A alocação dinâmica é o processo que aloca memória em tempo de execução. Ela é utilizada quando não se sabe ao certo quanto de memória será necessário para o armazenamento das informações, podendo ser determinadas em tempo de execução conforme a necessidade do programa. Dessa forma evita-se o desperdício de memória.
No padrão C ANSI existem 4 funções para alocações dinâmica pertencentes a biblioteca stdlib.h. São elas malloc(), calloc(), realloc() e free(). Sendo que as mais utilizadas são as funções malloc() e free(). Além das funções mencionadas acima existem outras que não serão abordadas neste tutorial, pois não são funções padrões. A alocação dinâmica é muito utilizada em problemas de estrutura de dados, por exemplo, listas encadeadas, pilhas, filas, arvores binárias e grafos. As funções malloc() e calloc() são responsáveis por alocar memória, a realloc() por realocar a memória e por ultimo a free() fica responsável por liberar a memória alocada. A sintaxe da função malloc() é dada por:
Esta função recebe como parâmetro “size” que é o número de bytes de memória que se deseja alocar. O tipo size_t é definido em stdlib.h como sendo um inteiro sem sinal. O interessante é que esta função retorna um ponteiro do tipo void podendo assim ser atribuído a qualquer tipo de ponteiro.
No exemplo abaixo, suponha que seja necessário no meio do código alocar uma memória com 150 bytes, para isto seria necessário digitar as seguintes linhas de código:
No programa abaixo podemos verificar alguns problemas que podem ser facilmente resolvidos se tivéssemos utilizado alocação dinâmica.
O exemplo acima é muito simples, mas demonstra em que situação deve utilizar alocação dinâmica.
Analisando o programa mostrado vemos que não se sabe a quantidade de valores que a pessoa vai inserir no vetor por esse motivo declaramos um vetor muito grande. O problema está se a pessoa, por exemplo, deseja colocar apenas 3