A "free list" is a fairly standard programming pattern, though it's not as common to see now with memory management and GC in most languages. At the base level, all it is is a list of currently "free" (i.e. available) resources that have been pre-allocated.