Malloc y free en C: ejercicio resuelto de memoria dinamica

  2 minutos

Si buscas malloc y free en C ejercicios resueltos, este ejemplo cubre reserva, redimensionado y liberacion segura.

Reserva un array dinamico, rellenalo, redimensionalo con realloc, muestra valores y libera memoria.

#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;
}
10 20 30 40 50
  • No comprobar malloc/realloc.
  • Sobrescribir el puntero original con realloc sin variable temporal.
  • Hacer free doble o olvidar free.

La memoria dinamica es clave en procesamiento de streams, buffers y estructuras de datos de tamano variable.

Si quieres una ruta completa con progresión real de dificultad:

Sí. Trabaja patrones que aparecen mucho en prácticas, entrevistas técnicas y evaluaciones de programación en C.

En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.

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.