A well-designed application program releases the memory block it no longer needs.
If two free memory blocks are contiguous, they are merged immediately into one block and linked to the list.
A program that isn’t well designed, however, hoards its memory blocks until it stops running; only then can MS-DOS deallocate the memory blocks used by that program.