Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       memcpy - Copier une zone mémoire

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <string.h>

       void *memcpy(void dest[restrict .n], const void src[restrict .n],
                    size_t n);

DESCRIPTION

       La  fonction memcpy() copie n octets depuis la zone mémoire src vers la zone mémoire dest. Les deux zones
       ne doivent pas se chevaucher. Si c'est le cas, utilisez plutôt memmove(3).

VALEUR RENVOYÉE

       La fonction memcpy() renvoie un pointeur sur dest.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ memcpy()                                                             │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

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

NOTES

       Le manque de conformité avec l'exigence voulant que les zones mémoire ne se chevauchent pas  a  constitué
       la  source de nombreux bogues. Les normes POSIX et C déclarent expressément que l'utilisation de memcpy()
       sur des zones qui se chevauchent conduit à un comportement non défini. En particulier,  une  optimisation
       de performance de memcpy() sur certaines plateformes, dont x86-64, dans la glibc 2.13 incluait un change‐
       ment de l'ordre dans lequel les octets étaient copiés de src dans dest.

       Ce changement a entraîné des dysfonctionnements dans un bon nombre d'applications qui copiaient des zones
       se  chevauchant.  L'ordre dans lequel les octets sont copiés dans les implémentations précédentes a caché
       ce bogue de façon fortuite et il est apparu lorsque l'ordre de la copie a été inversé.  Un  symbole  ver‐
       sionné  a  été ajouté à la glibc 2.14 de façon à ce que d'anciens binaires (comme ceux dont les liens ont
       été édités vers des versions antérieures à la glibc 2.14) emploient une implémentation  de  memcpy()  qui
       gère  le  cas  du chevauchement de façon sûre (en fournissant une « ancienne » implémentation de memcpy()
       qui a été renommée en memmove(3)).

VOIR AUSSI

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

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry Vignaud <tvi‐
       gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Guérard  <fe‐
       vrier@tigreraye.org>,  Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
       bian.org>,  Thomas  Huriaux  <thomas.huriaux@gmail.com>,   Nicolas   François   <nicolas.francois@centra‐
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
       Denis   Barbier   <barbier@debian.org>,   David  Prévot  <david@tilapin.org>,  Frédéric  Hantrais  <fhan‐
       trais@gmail.com> et Grégoire Scano <gregoire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                   29 décembre 2022                                       memcpy(3)