本文主要是介绍memcpy()和 memmove(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
memcpy()和memmove()都是从一块内存拷贝内容去另外一块内存。区别在于memcpy()不考虑内存重叠,容易出错,memmove()考虑内存重叠,保证安全。
memcpy()
void* memcpy(void *dest, void *src, size_t size)
{
if(dest == nullptr || src == nullptr||size<=0)return nullptr;char *p=(char *) dest;char *q=(char *) src;
while(size--)
{*p++=*q++;
}
return dest;
}
memmove()
void *memcpy(void *dest, void *src, size_t size)
{
if(dest == nullptr || src == nullptr)
return nullptr;
char *p=(char *) dest;
char *q=(char *) src;
if(dest < src || (char*)src+size < (char*)dest)//没有内存重叠
{while(size--){*p++=*q++;}
}
else//有内存重叠
{p = p+size-1;q = q+size-1;while(size--){*p--=*q--;}
}
return dest;
}
这篇关于memcpy()和 memmove()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!