算法练习-实现memmove,及memmove与memmcpy区别
void _Memmove(void *pDst,const void *pSrc, size_t size){
if(NULL == pDst || NULL == pSrc || size == 0)
return;
//内存重叠
if((pSrc<pDst) && ((char*)pSrc+size > pDst))
{
char *pstrSrc= (char *)pSrc + size -1;
char *pstrDst = (char *)pDst + size -1;
//从尾部拷贝
while(size--)
*pstrDst -- = *pstrSrc--;
}
else
{
char *pstrSrc= (char *)pSrc ;
char *pstrDst = (char *)pDst ;
//没有就正常拷贝
while(size--)
*pstrDst++ = *pstrSrc++;
}
}
memmove考虑的内存重叠
memmcpy没有考虑
页:
[1]