realloc() will extend the memory block if possible. If it isn't possible (That is, if the new memory block would overlap other reserved space) it will move the memory block to another address.
If the allocation can not be made at all, meaning that there is no more space, NULL is returned.