calloc en C: ejercicio resuelto con array dinámico inicializado a cero
calloc en C: ejercicio resuelto paso a paso
Si buscas un ejercicio de calloc en C resuelto, aquí tienes la diferencia práctica entre calloc y malloc, y cuándo conviene usar cada una.
La función calloc reserva memoria para un array de n elementos de size bytes cada uno y los inicializa todos a cero, a diferencia de malloc que deja el contenido sin definir.
Firma de calloc
n— número de elementos.size— tamaño en bytes de cada elemento.- Devuelve un puntero al bloque reservado, o
NULLsi falla.
Enunciado
- Reserva con
callocun array dinámico de 5 enteros e imprime sus valores iniciales (todos deben ser 0). - Rellénalo con los cuadrados de 1 a 5 e imprímelo.
- Libera la memoria con
free. - A continuación reserva el mismo array con
mallocy observa que los valores iniciales son indefinidos.
Solución en C
Resultado esperado
malloc vs calloc vs realloc
| Función | Inicializa a 0 | Redimensiona | Uso típico |
|---|---|---|---|
malloc(n) | No | No | buffer temporal, estructura única |
calloc(n, size) | Sí | No | arrays donde el cero es válido |
realloc(ptr, n) | No | Sí | arrays que crecen dinámicamente |
Errores frecuentes
- No comprobar si
callocdevuelveNULL(fallo de memoria). - Olvidar
freey provocar una fuga de memoria. - Asumir que
mallocinicializa a cero: nunca lo garantiza. - Pasar los parámetros en orden incorrecto: primero
n(cantidad), luegosize(tamaño por elemento).
Aplicación práctica
calloc es preferible a malloc cuando:
- el valor inicial cero tiene significado (contadores, matrices vacías, buffers de bytes),
- se quiere evitar leer basura accidentalmente durante el desarrollo.
Siguiente ejercicio recomendado
- Malloc y free en C: ejercicio resuelto
- malloc y realloc en C: ejercicio resuelto
- Punteros a funciones en C: ejercicio resuelto
- Todos los ejercicios de C
Práctica guiada y siguiente paso
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿calloc es más lento que malloc?
En la mayoría de sistemas calloc puede ser tan rápido o incluso más rápido que malloc + memset porque el sistema operativo puede entregar páginas ya puestas a cero. En la práctica la diferencia es negligible para arrays pequeños.
¿Puedo usar realloc con memoria reservada con calloc?
Sí. realloc funciona con cualquier puntero obtenido de malloc, calloc o una llamada anterior a realloc. El bloque nuevo no está inicializado a cero.
¿Cuándo es obligatorio usar calloc?
Cuando el código asume que los elementos del array valen cero antes de escribirlos. Si siempre vas a escribir antes de leer, malloc basta.