Alocação dinâmica de memória

1055 palavras 5 páginas
Alocação dinâmica de memória

As declarações abaixo alocam memória para diversas variáveis. A alocação é estática, pois acontece antes que o programa comece a ser executado:

char c; int i; int v[10];
Às vezes, a quantidade de memória a alocar só se torna conhecida durante a execução do programa. Para lidar com essa situação é preciso recorrer à alocação dinâmica de memória. A alocação dinâmica é gerenciada pelas funções malloc e free, que estão na biblioteca stdlib. Para usar esta biblioteca, é preciso dizer

#include no início do programa.

Função malloc

A função malloc (abreviatura de memory allocation) aloca um bloco de bytes consecutivos na memória do computador e devolve o endereço desse bloco. O número de bytes é especificado no argumento da função. No seguinte fragmento de código, malloc aloca 1 byte:

char *ptr; ptr = malloc( 1); scanf( "%c", ptr);
O endereço devolvido por malloc é do tipo "genérico" void *. O programador armazena esse endereço num ponteiro de tipo apropriado. No exemplo acima, o endereço é armazenado num ponteiro-para-char.

Para alocar um tipo-de-dado que ocupa vários bytes, é preciso recorrer ao operador sizeof, que diz quantos bytes o tipo especificado tem:

typedef struct { int dia, mes, ano; } data; data *d; d = malloc( sizeof (data)); d->dia = 31; d->mes = 12; d->ano = 2008;
[As aparências enganam: sizeof não é uma função.]

Overhead. Cada invocação de malloc aloca um bloco de bytes consecutivos maior que o solicitado: os bytes adicionais são usados para guardar informações administrativas sobre o bloco de bytes (essas informações permitem que o bloco seja corretamente desalocado, mais tarde, pela função free). O número de bytes adicionais pode ser grande, mas não depende do número de bytes

Relacionados

  • Alocação Dinâmica da memória
    1569 palavras | 7 páginas
  • Apostila Ponteiro Alocação dinâmica de memória
    2513 palavras | 11 páginas
  • 100631 Ger ncia de mem ria
    918 palavras | 4 páginas
  • trabalho
    1901 palavras | 8 páginas
  • marseem
    1112 palavras | 5 páginas
  • gerência de memória
    3100 palavras | 13 páginas
  • alocacao dinamica
    1057 palavras | 5 páginas
  • Aula sobre alocação dinâmica em c
    476 palavras | 2 páginas
  • Listas ligadas
    1699 palavras | 7 páginas
  • Aula 3 Aloca o de Mem ria
    4045 palavras | 17 páginas