Answer from cs61c-fz (Sean Nyberg 16014383) for Question 2 I'd have to say B and C. Again, if the memory you are freeing up is not adjacent to any other free blocks, the number of free blocks in the list will increase, but this is not always the case. If the memory being freed up is adjacent to only one of the free blocks it is between in the list, then the two chunks will fuse into a single free block, thus the number of blocks after that call to free remains unchanged. If the memory being freed is adjacent to BOTH of its neighbors in the list, then they will all merge into one free block and the number of blocks in the list decreases by one. The number of blocks in the free list will never decrease by 2 or more as a result of a call to free.