需求

正常我们直接复制内存使用的是 mcmcpy, 今天看到 memmove 感到比较奇怪,他们的区别是什么?

解决

相同点

memcpymemmove 都是内存复制。当目的内存和源内存没有交集的情况下,随便使用哪个都可以。

不同点

当目的内存和源内存有交集的时候,因为 memcpy 是从前向后复制的,所以会造成部分内容出错。而 memmove 会先判断,如果有交集,那么就从后向前复制。

注意

现在有些系统,在实现的时候, memcpymemmove 是等价的,所以可以直接用 memmove. 当效率要求不高的时候,可以统一使用 memmove, 当效率要求比较高的时候,在程序中无交集情况下,使用 memcpy, 有交集情况下使用 memmove.

参考

详解memcpy和memmove函数的使用