算法分析
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;
}

本文详细解析了memmove与memcpy两个内存拷贝函数的区别。重点介绍了memmove如何处理内存重叠的情况,确保拷贝内容正确无误。通过C++代码实现展示了具体的处理逻辑。
1395

被折叠的 条评论
为什么被折叠?



