Если назначения и источник одинаковы, memmove все еще "перемещает" данные (или возвращается напрямую)? Что насчет realloc; что если новый размер такой же, как и старый?
memmove
realloc