算法分析
memmove与memcpy都是内存拷贝,区别在于当存在内存重叠时,memmove保证拷贝的内容是正确的,memcpy就不保证。memcpy其实是memmove的一部分。
c++代码
char* memmove(char* dst,const char* src,size_t count)
{
const char* pSrc = src;
char* pDst = dst;
if(src == NULL || dst == NULL || count == 0)
{
return NULL;
}
if(dst <= src || dst >= src+count)
{
//没有内存重叠,从低地址拷贝
while(count--)
{
*pDst++ = *pSrc++;
}
}
else
{
//从高地址拷贝
pSrc = pSrc + count -1;
pDst = pDst + count -1;
while(count--)
{
*pDst = *pSrc;
pDst--;
pSrc--;
}
}
return dst;
}