Vetores x Alocação Dinâmica da Memória
Por: Fabiana Tinto • 23/6/2017 • Pesquisas Acadêmicas • 736 Palavras (3 Páginas) • 321 Visualizações
Nome: Fabiana de Araújo Tinto | RA: 16291705 |
Disciplina: Estrutura de Dados I | Professor: Erinaldo Nascimento |
Material de Avaliação Prática de Aprendizagem-MAPA
Na linguagem C, os vetores podem ser utilizados para representar uma lista, mas a lista também pode ser implementada por meio de estruturas com alocação dinâmica de memória. Pesquise sobre isso e responda com suas palavras: Qual o problema em utilizar um vetor ao invés de alocação dinâmica para implementação de listas?
Os Vetores são alocações de memórias estáticas que possuem o tamanho dos dados fixos e encontram-se organizados sequencialmente na memória, além disso, as variáveis armazenam o mesmo tipo de dado. Desta forma, os vetores reservam espaço na memória para todos os dados estejam eles sendo utilizado ou não durante a execução do programa, e ainda podem ser utilizados em listas como pilhas ou filas cuja distinção ocorre na entrada e saída de dados. Geralmente são recursos utilizados quando o desenvolvedor prevê a memória a ser utilizada.
Logo, a vantagem de se utilizar o vetor é que os dados vão estar dispostos de forma organizada de forma sequencial, desta forma, permitindo uma localização mais fácil e rápida. No entanto, apresenta como desvantagem que a quantidade de memória tem que ser estabelecida pelo programador antes da execução, e mesmo que não seja utilizada durante a execução já se encontra reservada para o programa.
[pic 1]
[pic 2]
Já alocação dinâmica de memória o espaço reservado de memória para as variáveis utilizar na execução do programa é definido enquanto o programa está sendo executado, isto é, quando o desenvolvedor não tem como prever o quanto de memória será utilizado para o armazenamento de dados na execução do programa, sendo assim, com a necessidade do programa vai se alocando a memória necessária para implementar o software.
[pic 3]
Para a construção desta alocação, faz-se necessário os Ponteiros, pois através dele pode monitorar os endereços de memórias já que na alocação dinâmica os dados não são armazenados de forma sequencial, e ainda que possamos recuperar os dados da memória. Ele compreende uma variável a qual representa a reserva da memoria para um elemento, ou seja, o ponteiro é referência do endereço da informação na memória, além disso, vale ressaltar que a propriedade do ponteiro assemelha-se ao tipo da variável a qual ele armazena o endereço.
[pic 4]
A alocação dinâmica ocorre através de funções são elas: malloc(), calloc(), realloc(), free(). A função malloc() atribui como parâmetro de espaço de armazenamento em um número de bytes na memória, podendo o ponteiro representar qualquer tipo de dado, contudo, deve-se verificar se existe espaço suficiente para aloca a memória desejada. Enquanto, que a função calloc() utiliza como parâmetro de armazenamento tanto a quantidade de elementos quanto o tamanho dos bytes. Já a função realloc() vai realocando o tamanho da memoria tanto para mais quanto para menos do tamanho original reservado. E a função free() informar ao sistema que a memória alocada pela função anterior não será mais utilizada e que sistema operacional pode liberar esta memoria. Diante de todas as funções as mais utilizadas são a função malloc() e a free().
...