The memory management system had weaknesses the system heap was not protected from errant applications, as would have been possible if the system architecture had supported memory protection, and this was frequently the cause of system problems and crashes. Since the entire application heap was dissolved when the application quit, fragmentation was minimized. As long as only one application at a time was run, the system worked well. The machine itself implemented two areas in memory available for this scheme – the system heap (used for the OS), and the application heap. If a memory request required compaction of memory, this was done and the table, called the master pointer block, was updated. Apple's scheme was simple – a handle was simply a pointer into a (non-relocatable) table of further pointers, which in turn pointed to the data. To solve this, Apple engineers used the concept of a relocatable handle, a reference to memory which allowed the actual data referred to be moved without invalidating the handle.
The primary concern of the original engineers appears to have been fragmentation – that is, the repeated allocation and deallocation of memory through pointers leading to many small isolated areas of memory which cannot be used because they are too small, even though the total free memory may be sufficient to satisfy a particular request for memory.