Provided by: manpages-de-dev_4.23.1-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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.