Well, Free() will take an offset ptr, which I was abusing here.

But, the original start isn't actually changed.
 * When it goes from the bottom, this definitely isn't the case.
 * When it goes from the top, a new block (with the original start) is created below the allocated block.

So the actual blocks, at least, have the original start addresses.  I figured not preserving these would end up causing fragmentation.

-[Unknown]