You don’t have any guarantees, any ReallocMem might decide to move. In trunk, if you have a situation like
[free 5,000][A 1,000][free 5,000]then any ReallocMem(A, N) will move A to a better place, be it N = 900, or N = 2,000, or even N = 1,000. If ReallocMem(A, 1000) does not decide to move A to a completely different place, it will turn it into
[A 1,000][free 10,000]