GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


man:memcpy

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 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 opti-
     mization 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.16 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-09-15                         MEMCPY(3)
/data/webs/external/dokuwiki/data/pages/man/memcpy.txt · Last modified: 2019/05/17 09:32 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki