- 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
- P2338R4 Freestanding Library: Character primitives and the C library
- C++26で、この関数がフリースタンディング処理系で使用可能になった