C · Intermediário · Inglês · Técnico
realloc
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.