Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       memcpy - メモリー領域をコピーする。

書式

       #include <string.h>

       void *memcpy(void *dest, const void *src, size_t n);

説明

       memcpy()   はメモリー領域 src の先頭 n バイトを メモリー領域 dest にコピーする。コピー元の
       領域と コピー先の領域が重なってはならない。重なっている場合は memmove(3)  を使うこと。

返り値

       memcpy()  は dest へのポインターを返す。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├─────────────────┼───────────────┼─────────┤
       │memcpy()         │ Thread safety │ MT-Safe │
       └─────────────────┴───────────────┴─────────┘

準拠

       POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

注意

       Failure to observe the requirement that the memory areas  do  not  overlap  has  been  the
       source  of  significant  bugs.   (POSIX  and  the  C standards are explicit that employing
       memcpy()  with overlapping areas produces undefined behavior.)   Most  notably,  in  glibc
       2.13 a performance optimization of memcpy()  on some platforms (including x86-64) included
       changing the order in which bytes were copied from src to dest.

       This change revealed breakages in a number of applications  that  performed  copying  with
       overlapping  areas.   Under the previous implementation, the order in which the bytes were
       copied had fortuitously hidden the bug, which was revealed  when  the  copying  order  was
       reversed.   In  glibc 2.14, a versioned symbol was added so that old binaries (i.e., those
       linked against glibc versions earlier than 2.14)  employed a memcpy()  implementation that
       safely   handles   the   overlapping  buffers  case  (by  providing  an  "older"  memcpy()
       implementation that was aliased to memmove(3)).

関連項目

       bcopy(3),  bstring(3),  memccpy(3),   memmove(3),   mempcpy(3),   strcpy(3),   strncpy(3),
       wmemcpy(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

                                            2017-09-15                                  MEMCPY(3)