1、memcpy函数原型
void *memcpy(void *dst, const void * src, size_t count)
{
assert((dst != NULL) && (src != NULL));
char *tmp_dst = (char *)dst;
chat *tmp_src = (char *)src;
while(count--)
*tmp_dst++ = *tmp_src++;
return dst;
}
2、memmove函数原型
void *memmove(void *dst, const void * src, size_t count)
{
assert((dst != NULL) && (src != NULL));
char *tmp_dst = (char *)dst;
char *tmp_src = (char *)src;
if (tmp_dst + count < src || tmp_src + count < dst)
{
while (count--)
*tmp_dst++ = *tmp_src++;
}
else
{
tmp_dst += count - 1;
tmp_src += count - 1;
while (count--)
*tmp_dst-- = *tmp_src--;
}
return dst;
}
3、区别
a.从代码上看,在频繁使用内存拷贝的地方,memcpy比memmove执行效率更高;
b.memmove比memcpy更安全,因为memmove判断了dest和src是否会重叠的情况,确保能正确拷贝到dest,但是这里需要注意,src会被修改!