Skip to content

Latest commit

 

History

History
66 lines (45 loc) · 1.61 KB

File metadata and controls

66 lines (45 loc) · 1.61 KB

memmove

  • cstring[meta header]
  • std[meta namespace]
  • function[meta id-type]
namespace std {
  void* memmove(void* s1, const void* s2, size_t n);
}
  • size_t[link /reference/cstddef/size_t.md]

概要

メモリデータをコピーする。コピー元とコピー先の領域が重なっていてもよい。

効果

s2が指すオブジェクトからs1が指すオブジェクトへ、先頭nバイトをコピーする。

コピーは、s2が指すnバイトをまず一時オブジェクトへコピーし、その一時オブジェクトからs1へコピーしたかのように行われる。そのため、コピー元とコピー先の領域が重なっていても正しくコピーされる。

戻り値

s1を返す。

備考

  • この関数は、フリースタンディング処理系でも使用できる。

#include <cstring>
#include <iostream>

int main()
{
  char s[] = "abcdef";

  // 領域が重複した状態で、1文字後ろへずらしてコピーする
  std::memmove(s + 1, s, 5);

  std::cout << s << std::endl;
}
  • std::memmove[color ff0000]

出力

aabcde

バージョン

言語

  • C++98

関連項目

  • memcpy: メモリデータをコピーする
  • memccpy: メモリデータを指定した文字が現れるまでコピーする

参照