Malloc y free en C: ejercicio resuelto de memoria dinamica

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#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

1
10 20 30 40 50

Errores frecuentes

  • No comprobar malloc/realloc.
  • Sobrescribir el puntero original con realloc sin variable temporal.
  • Hacer free doble o olvidar free.

Aplicación práctica

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

Siguiente ejercicio recomendado

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.