Yolinux.com

memcpy manpage

Search topic Section


MEMCPY(3)		   Linux Programmer's Manual		     MEMCPY(3)



NAME
       memcpy - copy memory area

SYNOPSIS
       #include <string.h>

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

DESCRIPTION
       The  memcpy()  function	copies	n bytes from memory area src to memory
       area dest.  The memory areas must not overlap.  Use memmove(3)  if  the
       memory areas do overlap.

RETURN VALUE
       The memcpy() function returns a pointer to dest.

ATTRIBUTES
       For   an	  explanation	of   the  terms	 used  in  this	 section,  see
       attributes(7).

       +----------+---------------+---------+
       |Interface | Attribute	  | Value   |
       +----------+---------------+---------+
       |memcpy()  | Thread safety | MT-Safe |
       +----------+---------------+---------+
CONFORMING TO
       POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

NOTES
       Failure to observe the requirement that the memory areas do not overlap
       has  been  the  source  of  real	 bugs.	(POSIX and the C standards are
       explicit that employing memcpy() with overlapping areas produces	 unde-
       fined  behavior.)   Most notably, in glibc 2.13 a performance optimiza-
       tion 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 per-
       formed copying with overlapping areas.  Under the previous  implementa-
       tion,  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  mem-
       cpy()  implementation  that safely handles the overlapping buffers case
       (by providing an "older" memcpy() implementation that  was  aliased  to
       memmove(3)).

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

COLOPHON
       This page is part of release 4.10 of the Linux  man-pages  project.   A
       description  of	the project, information about reporting bugs, and the
       latest	 version    of	  this	  page,	   can	   be	  found	    at
       https://www.kernel.org/doc/man-pages/.



				  2017-03-13			     MEMCPY(3)