std::memmove
提供: cppreference.com
| ヘッダ <cstring> で定義
|
||
| void* memmove( void* dest, const void* src, std::size_t count ); |
||
src の指すオブジェクトから dest の指すオブジェクトに count 個の文字をコピーします。 どちらのオブジェクトも unsigned char の配列として再解釈されます。
オブジェクトはオーバーラップしても構いません。 コピーは、文字が一時的な文字配列にコピーされ、その後その配列から dest にコピーされたかのように、行われます。
オブジェクトが TriviallyCopyable でない場合、 memmove の動作は規定されず、未定義になることがあります。
目次 |
[編集] 引数
| dest | - | コピー先のメモリ位置を指すポインタ |
| src | - | コピー元のメモリ位置を指すポインタ |
| count | - | コピーするバイト数 |
[編集] 戻り値
dest。
[編集] ノート
一時的なバッファを使用する「かのように」と規定されているにもかかわらず、この関数の実際の実装は二回のコピーや余分なメモリのオーバーヘッドを負担しません。 小さな count に対しては、レジスタにロードし、書き出すかもしれません。 大きなブロックに対しては、一般的な手法 (glibc および bsd libc) は、コピー先がコピー元より前に始まるならばバッファの先頭から順方向に、そうでなければ末尾から逆方向にバイトをコピーし、オーバーラップがまったくないときは std::memcpy にフォールバックします。
[編集] 例
Run this code
出力:
1234567890 1234456890
[編集] 関連項目
| バッファを別のバッファへコピーします (関数) | |
| バッファを文字で埋めます (関数) | |
| 2つのオーバーラップしている可能性のある配列間でワイド文字を一定量コピーします (関数) | |
| (C++11) |
指定範囲の要素を新しい位置にコピーします (関数テンプレート) |
| 指定範囲の要素を後ろからコピーします (関数テンプレート) | |
| (C++11) |
型がトリビアルにコピー可能かどうか調べます (クラステンプレート) |
| memmove の C言語リファレンス
| |

