Asignación dinámica de memoria en C: Entendiendo malloc() con ejemplos prácticos
¿Qué es malloc() en C?
En la Biblioteca Estándar de C, malloc() —abreviatura de "memory allocation"— reserva dinámicamente un bloque contiguo de memoria en tiempo de ejecución. La función devuelve un puntero void* al inicio de ese bloque, que puedes castear al tipo de puntero que necesites.
Sintaxis
ptr = (cast_type *)malloc(byte_size);
Donde:
ptres un puntero delcast_typeespecificado.byte_sizees el número de bytes a asignar.
Ejemplo:
ptr = (int *)malloc(50);
Tras esta llamada, se reservan 50 bytes de memoria y ptr apunta al primer byte de ese espacio.
Ejemplo práctico
#include <stdlib.h> #include <stdio.h> int main() { int *ptr; ptr = malloc(15 * sizeof(*ptr)); /* Asigna espacio para 15 enteros */ if (ptr != NULL) { *(ptr + 5) = 480; /* Asigna 480 al sexto entero */ printf("Value of the 6th integer is %d", *(ptr + 5)); } return 0; }
Salida:
Value of the 6th integer is 480

Puntos clave
- Usar
sizeof(*ptr)en lugar desizeof(int)hace que el código sea resistente a futuros cambios en el tipo del puntero. - Si el sistema no puede satisfacer la solicitud,
malloc()devuelveNULL; comprueba siempre el puntero nulo antes de usar la memoria. - El bloque asignado es contiguo y puede tratarse como un array. La aritmética de punteros es preferible al operador de subíndice para evitar modificar el valor original del puntero.
malloc() funciona con cualquier tipo de datos —incluyendo caracteres, estructuras y tipos definidos por el usuario— proporcionando una gestión de memoria flexible para programadores de C.
Lenguaje C
- Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
- Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
- Dominando punteros en C++: Conceptos, ejemplos y aplicaciones prácticas
- Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
- Structs en C++ explicados con un ejemplo práctico
- Dominando std::map en C++: Guía completa con ejemplos de código
- Dominar std::list en C++: Sintaxis, Funciones y Ejemplos Prácticos
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- calloc() en C: Asignación de memoria inicializada a cero y ejemplo práctico
- Uso de realloc() en C: Sintaxis, mejores prácticas y ejemplo
- Dominando la función free() en C: Guía práctica y ejemplo