1. ホーム
  2. c

[解決済み] memmoveとmemcpyの違いは何ですか?

2022-06-30 23:08:59

質問

とはどのような違いがあるのでしょうか? memmovememcpy ? 普段はどちらを、どのように使っていますか?

どのように解決するのですか?

とは memcpy では、送信先が送信元と重なることは一切ありません。また memmove では可能です。これはつまり memmove よりもごくわずかに遅くなる可能性があるということです。 memcpy と同じ仮定をすることができないので、若干遅くなるかもしれません。

例えば memcpy は常に下位から上位へアドレスをコピーする可能性があります。コピー先のアドレスがコピー元のアドレスの後に重なる場合、これはコピーされる前にいくつかのアドレスが上書きされることを意味します。 memmove はこれを検知して、この場合は別の方向、つまり高位から低位にコピーします。しかし、これをチェックして別の (おそらくより効率の悪い) アルゴリズムに切り替えるには時間がかかります。