domingo, 7 de abril de 2013

Alocação dinâmica de memória


É tipo assim. Quando você declara um int ou um char, por exemplo, essas variáveis tem um número de bytes pré definido pra ocupar. A alocação dinâmica de memória aloca exatamente o que você precisa.
Acaba que você não tem um vetor muito grande nem muito pequeno, porque sua variável vai ocupar exatamente o que você mandar.
São 4 funções: considerando int *p;

malloc: p = (int*) malloc(N * sizeof(int)); //aloca memória (N inteiros)
calloc: p = calloc(MAX_TAM, sizeof(int)); //aloca memória de tamanho MAX_TAM
realloc: p = (int *) realloc(x, 8000*sizeof(int)); //realoca memória de antes pro tamanho de 8000 inteiros
free: free(p); //libera a memória

É importante lembrar que quando se usa a alocação dinâmica é da NOSSA responsabilidade desalocar. Senão nem quando fechar o programa aquela alocação vai embora.
Outra coisa a acrescentar é sobre a função sizeof: ela retorna o tamanho em bytes daquele tipo de (ou do tipo daquela) variável.

Nenhum comentário:

Postar um comentário