我理解这一点memmove
,memcpy
不同之处在于memmove
处理内存重叠情况。我检查了 libgcc 中的实现,并从 intel 网站获得了这篇文章[memcpy performance] 。
在 libgcc 中,与memmove
类似memcpy
,都是一个字节一个字节,所以优化后性能应该差不多。
有人对此进行了测量,并得到了这篇文章memcopy、memmove 和 Speed over Safety。即使我不认为memmove
可以比 快memcpy
,但至少在Intel
平台上应该没有太大区别。
那么在什么平台以及如何,memcpy
可以明显快于memmove
,如果没有,为什么提供两个类似的功能而不是仅仅提供两个类似的功能memmove
,并导致很多错误。
编辑:我不是在问 memmove 和 memcpy 的区别,我知道 memmove 可以处理重叠问题。问题是真的有什么平台 memcpy 比 memmove 快吗?