私はそれを理解してmemmoveおり、memcpy違いはmemmoveメモリオーバーラップケースを処理することです。libgcc での実装を確認し、インテルの Web サイトからこの記事[memcpy performance]を入手しました。
libgcc では、memmoveは に似ていますがmemcpy、どちらも 1 バイトと 1 バイトを使用するだけなので、最適化後でもパフォーマンスはほぼ同じになるはずです。
誰かがこれを測定し、この記事memcopy, memmove, and Speed over Safetyを得ました。memmoveが より速いとは思いませんが、少なくともプラットフォームmemcpy上では大きな違いはないはずです。Intel
したがって、どのプラットフォームで、どのようにmemcpyが よりも大幅に高速になる可能性がありますmemmove。存在しない場合は、なぜ だけmemmoveではなく 2 つの同様の機能を提供し、多くのバグにつながります。
編集: memmove と memcpy の違いを尋ねているわけではありません。memmove がオーバーラップの問題を処理できることはわかっています。問題は、memcpy が memmove よりも高速なプラットフォームが実際にあるということです。