Moving blocks memory manager in pure c