Función realloc() en la biblioteca C: ¿Cómo utilizarla? Sintaxis y ejemplo
¿Qué es reasignar()?
realloc () es una función de la biblioteca C para agregar más tamaño de memoria a los bloques de memoria ya asignados. El propósito de realloc en C es expandir los bloques de memoria actuales dejando el contenido original como está. La función realloc() ayuda a reducir el tamaño de la memoria previamente asignada mediante funciones malloc o calloc. realloc significa reasignación de memoria.
Sintaxis para reasignar en C
ptr = realloc (ptr,newsize);
La declaración anterior asigna un nuevo espacio de memoria con un tamaño específico en la variable newsize. Después de ejecutar el función, el puntero volverá al primer byte del bloque de memoria. El nuevo tamaño puede ser mayor o menor que la memoria anterior. No podemos estar seguros de que el bloque recién asignado apunte a la misma ubicación que el bloque de memoria anterior. La función de reasignación en C copiará todos los datos anteriores en la nueva región. Se asegura de que los datos permanezcan seguros.
Por ejemplo:
#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; }
Cómo utilizar realloc()
El siguiente programa en C demuestra cómo usar realloc en C para reasignar la memoria.
#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 de la reasignación en el ejemplo de C:
Memory created successfully
Siempre que la reasignación da como resultado una operación fallida, devuelve un puntero nulo, y los datos anteriores también se liberan.