Função realloc() na biblioteca C: como usar? Sintaxe e exemplo
O que é realloc()?
realloc () é uma função da biblioteca C para adicionar mais tamanho de memória aos blocos de memória já alocados. O objetivo do realloc em C é expandir os blocos de memória atuais, deixando o conteúdo original como está. A função realloc() ajuda a reduzir o tamanho da memória alocada anteriormente pelas funções malloc ou calloc. realloc significa realocação de memória.
Sintaxe para realocação em C
ptr = realloc (ptr,newsize);
A instrução acima aloca um novo espaço de memória com um tamanho especificado na variável newsize. Depois de executar o função, o ponteiro retornará para o primeiro byte do bloco de memória. O novo tamanho pode ser maior ou menor que a memória anterior. Não podemos ter certeza de que o bloco recém-alocado apontará para o mesmo local do bloco de memória anterior. A função realloc em C copiará todos os dados anteriores na nova região. Isso garante que os dados permanecerão seguros.
Por exemplo:
#include <stdio.h> int main () { char *ptr; ptr = (char *) malloc(10); strcpy(ptr, "Programming"); printf(" %s, Address = %u\n", ptr, ptr); ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size strcat(ptr, " In 'C'"); printf(" %s, Address = %u\n", ptr, ptr); free(ptr); return 0; }
Como usar realloc()
O programa abaixo em C demonstra como usar realloc em C para realocar a memória.
#include <stdio.h> #include <stdlib.h> int main() { int i, * ptr, sum = 0; ptr = malloc(100); if (ptr == NULL) { printf("Error! memory not allocated."); exit(0); } ptr = realloc(ptr,500); if(ptr != NULL) printf("Memory created successfully\n"); return 0; }
Resultado da realocação no exemplo C:
Memory created successfully
Sempre que o realloc resulta em uma operação malsucedida, ele retorna um Ponteiro nulo, e os dados anteriores também são liberados.