ExpertiDict

C · Intermediário · Inglês · Técnico

realloc

/ɹiˈæ.lɑk/substantivo

Função que muda o tamanho de um bloco alocado, possivelmente movendo-o para outro endereço e copiando o conteúdo. Devolve NULL se falhar, deixando o bloco original intacto.

Onde usar

É usada para fazer arrays crescerem. O endereço pode mudar, então todo ponteiro antigo para o bloco fica inválido.

Em código

int *novo = realloc(v, n * sizeof *v);
if (novo == NULL) {
  free(v);
  return 1;
}
v = novo;

Exemplos

Grow the buffer with realloc, but keep the old pointer until it succeeds.

Aumente o buffer com realloc, mas guarde o ponteiro antigo até dar certo.

After realloc, the old pointer may be invalid.

Depois do realloc, o ponteiro antigo pode estar inválido.

Cuidado

Escrever p = realloc(p, n) direto: se falhar, você perde o ponteiro original e vaza a memória.

Origem

Abreviação de reallocation.

Veja também

Todos os termos de C