Malloc y free en C: ejercicio resuelto
Si buscas malloc y free en C ejercicios resueltos, este ejemplo cubre reserva, redimensionado y liberacion segura.
Enunciado
Reserva un array dinamico, rellenalo, redimensionalo con realloc, muestra valores y libera memoria.
Solución en C
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n = 3;
int *a = malloc(n * sizeof(int));
if (a == NULL) {
fprintf(stderr, "Error al reservar memoria\n");
return 1;
}
for (int i = 0; i < n; i++) a[i] = (i + 1) * 10;
int nuevo_n = 5;
int *tmp = realloc(a, nuevo_n * sizeof(int));
if (tmp == NULL) {
free(a);
fprintf(stderr, "Error al redimensionar memoria\n");
return 1;
}
a = tmp;
for (int i = n; i < nuevo_n; i++) a[i] = (i + 1) * 10;
for (int i = 0; i < nuevo_n; i++) printf("%d ", a[i]);
printf("\n");
free(a);
return 0;
}Salida esperada
10 20 30 40 50Errores frecuentes
- No comprobar
malloc/realloc. - Sobrescribir el puntero original con
reallocsin variable temporal. - Hacer
freedoble o olvidarfree.
Aplicación práctica
La memoria dinamica es clave en procesamiento de streams, buffers y estructuras de datos de tamano variable.
Siguiente ejercicio recomendado
- Puntero a puntero en C: ejercicio resuelto con cambio de referencia
- Punteros en C: ejercicios resueltos de paso por referencia
- Árbol binario en C: ejercicio resuelto de inserción y búsqueda
- Todos los ejercicios de C
Práctica guiada y libro completo
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Este ejercicio sirve para entrevistas y exámenes de C?
Sí. Trabaja patrones que aparecen mucho en prácticas, entrevistas técnicas y evaluaciones de programación en C.
¿Dónde seguir con más ejercicios resueltos de C?
En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.
¿Cómo practicar este tipo de ejercicio para mejorar más rápido?
Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.