Definition: A free list is usually implemented as a list of returned memory addresses. Each address posints to a block of RAM that had been in use, but now has been freed up.
Without complicated and slow memory management schemes, it is impossible to determine if a given block of memory is free or in use. So when it is freed up, its address is stored in the free list. When a new block of memory is required, the free list is consulted first to see if one of the free blocks can be used.
The overall effect though is to split available RAM into smaller and smaller blocks and eventually these have to be Garbage Collected to combine free blocks into one.

