The first versions of MS-DOS gave all available memory to the resident application program, but that proved insufficient because the simple contiguous memory allocation scheme didn’t allow application programs to dynamically allocate and deallocate memory blocks.
With Version 2.0, MS-DOS began supporting dynamic allocation, modification, and release of main memory blocks by application programs.