void * mm_malloc(size_t size) param: size - The requested size (payload only) of a block Description: Calculate the adjusted size, asize, to include the header and footer and round up if necessary to satisfy the alignment requirement (e.g. total size must be a multiple of 8). Then (1) call find_fit to get a free block of size >= asize that has been removed from the linked list (or tree) of free blocks (2) if no block found call extend_heap to get a free block (3) if extend_heap can't extend the heap return NULL (4) otherwise call place with the free block and the requested size, asize to possibly split the block and to mark the selected block as allocated. (5) return the allocated block that is returned by place Return: the allocated block or return NULL if no block could be found and the heap could not be extended.