How To Allocate Memory In C

La asignación de memoria dinámica en C es el proceso de reservar espacio en la memoria heap durante la ejecución de un programa. Esto permite crear variables y estructuras de datos cuyo tamaño no se conoce en tiempo de compilación.
Paso 1: Incluir la librería stdlib.h. Esta librería proporciona las funciones necesarias para la asignación y liberación de memoria. Debes añadir #include <stdlib.h> al principio de tu código.
Paso 2: Utilizar malloc() para la asignación. La función malloc() (memory allocation) reserva un bloque de memoria del tamaño especificado en bytes y devuelve un puntero a la primera posición de memoria reservada. Por ejemplo, para reservar espacio para 10 enteros:
Must Read
int ptr = (int)malloc(10 * sizeof(int));
Aquí, sizeof(int) devuelve el tamaño en bytes de un entero, y lo multiplicamos por 10 para reservar espacio para 10 enteros. El casting (int) convierte el puntero genérico (void) devuelto por malloc() a un puntero a entero.

Paso 3: Comprobar si la asignación fue exitosa. Si malloc() no puede asignar la memoria solicitada (por ejemplo, si no hay suficiente memoria disponible), devuelve NULL. Siempre debes verificar que el puntero no sea NULL antes de usarlo:
if (ptr == NULL) {
printf("Error: No se pudo asignar memoria.\n");
exit(1);
}
Paso 4: Utilizar la memoria asignada. Ahora puedes usar el puntero ptr para acceder a la memoria reservada como si fuera un array de enteros.

Paso 5: Liberar la memoria con free(). Una vez que hayas terminado de usar la memoria asignada, es crucial liberarla con la función free() para evitar fugas de memoria. Por ejemplo: free(ptr);. Despues de liberar el puntero, es buena práctica asignarle el valor NULL: ptr = NULL;
Usos Prácticos: La asignación de memoria dinámica es esencial para crear arrays dinámicos (arrays cuyo tamaño se determina durante la ejecución) y para implementar estructuras de datos complejas como listas enlazadas, árboles y grafos.
