This is the memory layout before allocating chunks: Address Chunk/hole -------------------------- 0 1024-byte chunk 1024 128-byte hole 1152 1024-byte chunk 2176 512-byte hole 2688 1024-byte chunk 3712 32-byte hole 3744 1024-byte chunk 4768 64-byte hole 4832 1024-byte chunk Question #1: The allocator allocates chunks at the BEGINNING of holes. If if did allocate at the end, the 32-byte chunk would have been allocated at address 4832-32 = 4800. Instead it was allocated at address 4768. Question #2: None of the above Question #3: Best Fit Question #4: The 90-byte chunk was allocated at address 1024 The 20-byte chunk was allocated at address 3712 The 30-byte chunk was allocated at address 1114 The 20-byte chunk was allocated at address 4768