malloc y realloc en C: ejercicio resuelto con array dinámico

  2 minutos

Si buscas malloc y realloc en C ejercicio resuelto, aquí tienes un ejemplo típico de array dinámico con crecimiento por capacidad.

Implementa un array dinámico de enteros en C que:

  • empiece con capacidad 4,
  • inserte 8 valores,
  • duplique capacidad con realloc cuando se quede sin espacio.
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    size_t cap = 4;
    size_t n = 0;
    int *v = malloc(cap * sizeof(int));
    if (!v) return 1;

    for (int x = 10; x <= 80; x += 10) {
        if (n == cap) {
            cap *= 2;
            int *tmp = realloc(v, cap * sizeof(int));
            if (!tmp) {
                free(v);
                return 1;
            }
            v = tmp;
        }
        v[n++] = x;
    }

    printf("Tamano: %zu | Capacidad: %zu\n", n, cap);
    for (size_t i = 0; i < n; i++) printf("%d ", v[i]);
    printf("\n");

    free(v);
    return 0;
}
Tamano: 8 | Capacidad: 8
10 20 30 40 50 60 70 80
  • Sobrescribir el puntero original con realloc sin usar puntero temporal.
  • No comprobar NULL en malloc y realloc.
  • Olvidar free al final.

Este patrón se usa en listas dinámicas, buffers y estructuras de datos que crecen en tiempo de ejecución.

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

Cuando necesitas redimensionar memoria ya reservada sin copiar manualmente bloque a bloque.

No es lo ideal. Usa un temporal para no perder la referencia original si falla.

Duplicar capacidad suele ser una estrategia práctica y eficiente para inserciones sucesivas.