malloc

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

malloc é um termo da computação que designa uma função da biblioteca padrão das linguagens de programação C e C++ para requisitar alocação dinâmica de memória. É uma forma abreviada de escrever memory allocation (alocação de memória).

Uso[editar | editar código-fonte]

A função malloc possui o seguinte protótipo:

void *malloc(size_t size);

Recebendo como parâmetro o tamanho em bytes da região a ser alocada e retornando um ponteiro para a área alocada. Se ocorrer um erro ao alocar memória, retorna um ponteiro para NULL.

O exemplo de código na linguagem C a seguir pede a alocação dinâmica de um vector de inteiros com vinte e cinco posições, altera o valor na posição dez e depois libera a área de memória.

int *vector = NULL; /* declaração do ponteiro */
vector = (int*) malloc(25 * sizeof(int)); /* alocação de memória para o vector */
vector[10] = 34; /* altera o valor da posição dez para trinta e quatro */
free(vector); /* liberta a área de memória alocada */

Problemas[editar | editar código-fonte]

O uso de memória dinâmica administrada pelo próprio programador abre a possibilidade para a ocorrência de problemas relativos ao mau uso da memória que muitas vezes geram vulnerabilidades de segurança e erros de difícil localização. Entre os problemas mais comuns estão:

  • Vazamento de memória: ter uma região de memória alocada porém sem ponteiros para ela o que impede sua libertação
  • Buffer overflow: escrever na memória para além do limite da área alocada
  • Uso de áreas liberadas: escrever numa região da memória que já foi libertada por free
  • Falha do malloc: se não houver memória disponível, o malloc irá falhar

Há ferramentas especializadas para detectar problemas desta natureza como o Valgrind.

Ícone de esboço Este artigo sobre Software é um esboço. Você pode ajudar a Wikipédia expandindo-o.