問題 copy vs. memcpy vs memmoveに関して(ここで優れ た情報、ところで)、私は読んでいて、口頭で言われていることとは異なり、たとえばcppreference注: memcpy はに変更されましたこの引用を受け取ってからmemmove。 --
ノート
実際には、 の実装では
std::copy
複数の代入を避けstd::memcpy
、値の型がTriviallyCopyable
-- std::copy
(nor std::copy_backward
)は、宛先範囲の先頭のみがソース範囲に入ってはならず、範囲全体が重複してはならないため、 に関して実装することはできません。memcopy
std::copy
memcpy
Visual-C++ の実装 (xutility
ヘッダーを参照) を見ると、VC++ がmemmoveを使用していることもわかりますが、現在は よりも要件が緩和されていますstd::copy
。
... オブジェクトがオーバーラップする可能性があります。コピーは、文字が一時的な文字配列にコピーされ、次に文字が配列からコピーされたかのように行われます ...
したがってstd::copy
、の観点からの実装memcpy
は不可能に見えますが、使用memmove
は実際にはペシミゼーションです。(ほんの少しの悲観化、おそらく測定できないかもしれませんが、それでも)
質問に戻るには:私の要約は正しいですか? これはどこかで問題がありますか?指定されているものに関係なく、memcpy
の要件も満たさないの実用std::copy
的なmemcpy
実装の可能性さえありstd::copy
ますか?