11.27 memcpy和memmove有什么区别?

 

问:memcpy和memmove有什么区别?

 

答:memmove允许源地址指向的缓冲区和目的地址指向的缓冲区重叠。因此效率没有memcpy高。

实现memmove很容易,只需额外的检测即可对重叠的情况提供保证。

 

 

void *memmove(void dest, void const *src, size_t n) { register char *dp = dest; register char const *sp = src; if (dp < sp) { while ( n—> 0 ) *dp++ = *sp++; }else { dp += n; sp += n; while ( n—> 0) *--dp = *—sp; } return dest; } 

你可能感兴趣的:(11.27 memcpy和memmove有什么区别?)