Una lista libre es una estructura de datos utilizada en un esquema para la asignación de memoria dinámica . Funciona conectando regiones de memoria no asignadas juntas en una lista vinculada , utilizando la primera palabra de cada región no asignada como puntero a la siguiente. Es más adecuado para realizar asignaciones desde un grupo de memoria , donde todos los objetos tienen el mismo tamaño.
Las listas gratuitas simplifican las operaciones de asignación y desasignación. Para liberar una región, basta con vincularla a la lista gratuita. Para asignar una región, uno simplemente eliminaría una sola región del final de la lista libre y la usaría. Si las regiones son de tamaño variable, es posible que deba buscar una región de tamaño suficientemente grande, lo que puede resultar caro.
Las listas gratuitas tienen la desventaja, heredadas de listas vinculadas, de una localidad de referencia deficiente y, por lo tanto, de un uso de caché de datos deficiente , y no consolidan automáticamente las regiones adyacentes para cumplir con las solicitudes de asignación para regiones grandes, a diferencia del sistema de asignación de amigos . Sin embargo, siguen siendo útiles en una variedad de aplicaciones simples donde un asignador de memoria completo es innecesario o requiere demasiada sobrecarga.
El tiempo de ejecución de OCaml utiliza listas gratuitas para satisfacer las solicitudes de asignación.