Dominando la función free() en C: Guía práctica y ejemplo
¿Qué es la función free() en C?
La función free(), parte de la biblioteca estándar de C, libera memoria que fue asignada previamente con malloc(), calloc() o realloc(). Al devolver el bloque al montículo (heap), mantiene la huella de memoria de tu programa bajo control y previene el agotamiento de la memoria disponible.
A diferencia de las variables de pila, la memoria asignada dinámicamente debe liberarse explícitamente. No llamar a free() puede provocar fugas de memoria y eventualmente causar un error de out-of-memory.
Sintaxis
void free(void *ptr);
Aquí, ptr es un puntero al bloque de memoria que deseas desasignar. Pasar un puntero NULL es seguro y resulta en una no operación.
Ejemplo práctico
#include <stdio.h> #include <stdlib.h> int main(void) { // Asignar espacio para 10 enteros int *ptr = malloc(10 * sizeof(*ptr)); if (ptr == NULL) { fprintf(stderr, "Memory allocation failed\n"); return 1; } // Almacenar un valor y mostrarlo ptr[2] = 50; printf("Value of the 3rd integer is %d\n", ptr[2]); // Liberar la memoria cuando termine free(ptr); return 0; }
Salida:
Value of the 3rd integer is 50
Mejores prácticas
- Comprueba siempre el valor de retorno de
malloc()(o funciones relacionadas) antes de usar el puntero. - Establece el puntero a
NULLdespués de llamar afree()para evitar liberaciones dobles accidentales. - No liberes memoria que no fue asignada dinámicamente.
- Usa
free()tan pronto como termines con la memoria para mantener el heap ligero.
Lenguaje C
- Dominando std::vector en C++: Arrays dinámicos, iteradores y ejemplos prácticos
- Dominando std::map en C++: Guía completa con ejemplos de código
- Polimorfismo en C++ explicado: Ejemplos prácticos y conceptos clave
- calloc() en C: Asignación de memoria inicializada a cero y ejemplo práctico
- Uso de realloc() en C: Sintaxis, mejores prácticas y ejemplo
- Uso de funciones impuras en VHDL: Mejorando legibilidad y mantenibilidad de FSM
- Dominando funciones VHDL: Guía práctica para diseño eficiente
- Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
- Método Java String length(): Cómo obtener el tamaño de un String (Ejemplo)
- Dominando el método compareTo() de Java String: Sintaxis, casos de uso y ejemplos prácticos
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos