Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       memcpy - kopiert Speicherbereich

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <string.h>

       void *memcpy(void Ziel[restrict .n], const void Quelle[restrict .n],
                    size_t n);

BESCHREIBUNG

       Die  Funktion  memcpy()  kopiert  n  Byte  von  Speicherbereich  Quelle  nach  Speicherbereich  Ziel. Die
       Speicherbereiche  dürfen  sich  nicht  überschneiden.   Verwenden   Sie   memmove(3),   wenn   sich   die
       Speicherbereiche überschneiden.

RÜCKGABEWERT

       Die Funktion memcpy() gibt einen Zeiger auf Ziel zurück.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌───────────────────────────────────────────────────────────────────┬───────────────────────┬───────────┐
       │ SchnittstelleAttributWert      │
       ├───────────────────────────────────────────────────────────────────┼───────────────────────┼───────────┤
       │ memcpy()                                                          │ Multithread-Fähigkeit │ MT-Sicher │
       └───────────────────────────────────────────────────────────────────┴───────────────────────┴───────────┘

STANDARDS

       C11, POSIX.1-2008.

GESCHICHTE

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

WARNUNGEN

       Ignorierung  der Anforderung, dass sich Speicherbereiche nicht überlappen, ist die Quelle von erheblichen
       Fehlern. (POSIX und der C-Standard sagen deutlich,  dass  der  Einsatz  von  memcpy()  mit  überlappenden
       Bereichen  undefiniertes  Verhalten  hervorruft.)  Insbesondere eine Leistungsoptimierung von memcpy() in
       Glibc 2.13 auf einigen Plattformen (darunter x86-64) führten zur Änderung der Reihenfolge  in  der  Bytes
       von Quelle nach Ziel kopiert wurden.

       Diese  Änderung  deckte  Defekte in einer Reihe von Anwendungen auf, die überlappende Bereiche kopierten.
       Unter der bisherigen Implementierung hatte die Reihenfolge, in  der  Bytes  kopiert  wurden,  den  Fehler
       zufälligerweise  versteckt, was dann bei der Änderung der Kopierreihenfolge aufgedeckt wurde. Unter Glibc
       2.14 wurde ein versioniertes  Symbol  hinzugefügt,  so  dass  alte  Programme  (d.h.  solche,  die  gegen
       Glibc-Versionen älter als 2.14 gelinkt worden waren) eine memcpy()-Implementierung einsetzten, die solche
       überlappende Pufferfälle sicher handhabt (indem sie eine »ältere« Implementierung von memcpy() verwendet,
       die als memmove(3) bekannt gemacht wurde).

SIEHE AUCH

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

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Martin Eberhard
       Schauer  <Martin.E.Schauer@gmx.de>,  Helge  Kreutzmann  <debian@helgefjell.de>  und   Mario   Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese  Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte  eine  E-Mail  an  die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                         memcpy(3)