La memoria asignada mediante las funciones malloc y calloc no se desasigna por sí sola. Por lo tanto, se utiliza el método free siempre que se realiza la asignación de memoria dinámica. Ayuda a reducir el desperdicio de memoria al liberarla.
¿Cómo se libera la memoria asignada?
En C, la función de biblioteca malloc se usa para asignar un bloque de memoria en el montón. El programa accede a este bloque de memoria a través de un puntero que devuelve malloc. Cuando ya no se necesita la memoria, el puntero se pasa a free, que desasigna la memoria para que pueda usarse para otros fines.
¿Qué pasa si no liberas la memoria asignada?
En la mayoría de los casos, desasignar memoria justo antes de salir del programa no tiene sentido. El sistema operativo lo recuperará de todos modos. Free tocará y buscará en los objetos muertos; el sistema operativo no lo hará. Consecuencia: tenga cuidado con los "detectores de fugas" que cuentan las asignaciones.
¿Es costosa la asignación de memoria?
Una medida ingenua del costo de asignar y liberar grandes bloques de memoria concluiría que cuesta alrededor de 7.5 μs por cada par asignado/libre. Sin embargo, hay tres costos separados por MB para asignaciones grandes.
¿Puede reasignar el espacio de memoria asignado si es así, cómo?
La función realloc asigna, reasigna o libera el bloque de memoria especificado por old_blk según las siguientes reglas: Si old_blk es NULL, un nuevo bloque de memoria de bytes de tamaño esasignado. Si el tamaño es cero, se llama a la función free para liberar la memoria a la que apunta old_blk.