下面是memmove函数的实现代码:
void memmove(void *dest, void const *src, size_t n)
{
register char *dp = (char*)dest;
register char *sp = (char*)dest;
if (dp == sp)
{
return;
}
else if (dp < sp)
{
while(n-- > 0)
*dp++ = *sp++;
}
else
{
// we should do the copy reversely
dp += n;
sp += n;
while (n-- > 0)
*--dp = *--sp;
}
}