General purpose C dynamic memory allocator (CMU 15-213)