Aloca;'ao dinamica de memoria e ponteiros

Disponível somente no TrabalhosFeitos
  • Páginas : 10 (2459 palavras )
  • Download(s) : 0
  • Publicado : 9 de maio de 2012
Ler documento completo
Amostra do texto
Alocação dinâmica de Memória


Quando um programa é executado, o sistema operacional coloca o código do programa (as instruções em linguagem máquina) na memória do computador. Além das instruções, o sistema operacional também reserva memória para as variáveis que o programa vai utilizar.
O mais interessante de tudo é que o programa não é o única coisa que está na memória do computador.Resumindo, a memória do computador é um recurso que é partilhado pelos vários programas dos vários utilizadores. Quem se encarrega de fazer a gestão da memória é o sistema operacional.
O próprio sistema operacional também é um programa (mais corretamente, é um conjunto de programas) e ele próprio também ocupa parte da memória do computador.
Quando a memória do computador começa a ficar cheia, osistema operacional pode utilizar parte do disco para servir de memória RAM. A desvantagem disso é que o tempo de acesso ao disco é muito menor do que o tempo de acesso à memória RAM.
A Alocação de memória, consiste no processo de solicitar/utilizar memória durante o processo de execução de um programa de computador. A alocação de memória no computador pode ser dividida em dois grupos principais:
Alocação Estática: os dados tem um tamanho fixo e estão organizados seqüencialmente na memória do computador. Um exemplo típico de alocação estática são as variáveis globais e arrays;
 Alocação Dinâmica: os dados não precisam ter um tamanho fixo, pois podemos definir para cada dado quanto de memória que desejamos usar. Sendo assim vamos alocar espaços de memória (blocos) que não precisam estarnecessariamente organizados de maneira seqüencial, podendo estar distribuídos de forma dispersa (não ordenada) na memória do computador. Na alocação dinâmica, vamos pedir para alocar/desalocar blocos de memória, de acordo com a nossa necessidade, reservando ou liberando blocos de memória durante a execução de um programa. Para poder “achar” os blocos que estão dispersos ou espalhados na memóriausamos as variáveis do tipo Ponteiro (indicadores de endereços de memória).




Alocação dinâmica

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 odesperdí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.
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 é queesta 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 utilizadoalocaçã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 elementos no vetor. Como o vetor foi declarado com o...
tracking img