std:: memmove
|
ヘッダーで定義
<cstring>
|
||
|
void
*
memmove
(
void
*
dest,
const
void
*
src,
std::
size_t
count
)
;
|
||
以下の操作を順番に実行します:
-
destにオブジェクトを暗黙的に作成 します。 -
srcが指すオブジェクトからcount文字(型unsigned charとして扱う、以下同様)をコピーし、count文字の一時配列arrに格納します。 ここでarrはdestとsrcが指すオブジェクトと オーバーラップしません。 -
arrからcount文字をdestが指すオブジェクトにコピーします。
dest または src が ヌルポインタ または 無効なポインタ の場合、動作は未定義です。
目次パラメータ
戻り値適切に作成されたオブジェクトが存在する場合、そのオブジェクトへのポインタを返します。それ以外の場合は dest を返します。 注記仕様では一時バッファが使用されるとされているにもかかわらず、この関数の実際の実装では二重コピーや余分なメモリのオーバーヘッドは発生しません。小さい count の場合、レジスタの読み込みと書き出しが行われる可能性があります。より大きなブロックでは、一般的なアプローチ(glibcおよびbsd libc)として、コピー先がコピー元より前に始まる場合はバッファの先頭から順方向に、それ以外の場合は末尾から逆方向にバイトをコピーし、全くオーバーラップがない場合には std::memcpy にフォールバックします。
strict aliasing
が同じメモリを異なる2つの型の値として検査することを禁止する場合、
例
このコードを実行
出力: 1234567890 1234456890 不具合報告以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
関連項目
| |||||||||||||||||||||||||||||||||