memcpy(3) Library Functions Manual memcpy(3) BEZEICHNUNG memcpy - kopiert Speicherbereich BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include 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 durfen sich nicht uberschneiden. Verwenden Sie memmove(3), wenn sich die Speicherbereiche uberschneiden. RUCKGABEWERT Die Funktion memcpy() gibt einen Zeiger auf Ziel zuruck. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |memcpy() | Multithread-Fahigkeit | MT-Sicher | +--------------------------------+-------------------------+-----------+ STANDARDS C11, POSIX.1-2008. GESCHICHTE POSIX.1-2001, C89, SVr4, 4.3BSD. WARNUNGEN Ignorierung der Anforderung, dass sich Speicherbereiche nicht uberlappen, ist die Quelle von erheblichen Fehlern. (POSIX und der C-Standard sagen deutlich, dass der Einsatz von memcpy() mit uberlappenden Bereichen undefiniertes Verhalten hervorruft.) Insbesondere eine Leistungsoptimierung von memcpy() in Glibc 2.13 auf einigen Plattformen (darunter x86-64) fuhrten zur Anderung der Reihenfolge in der Bytes von Quelle nach Ziel kopiert wurden. Diese Anderung deckte Defekte in einer Reihe von Anwendungen auf, die uberlappende Bereiche kopierten. Unter der bisherigen Implementierung hatte die Reihenfolge, in der Bytes kopiert wurden, den Fehler zufalligerweise versteckt, was dann bei der Anderung der Kopierreihenfolge aufgedeckt wurde. Unter Glibc 2.14 wurde ein versioniertes Symbol hinzugefugt, so dass alte Programme (d.h. solche, die gegen Glibc-Versionen alter als 2.14 gelinkt worden waren) eine memcpy()-Implementierung einsetzten, die solche uberlappende Pufferfalle sicher handhabt (indem sie eine >>altere<< 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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Patrick Rother , Martin Eberhard Schauer , Helge Kreutzmann und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 memcpy(3)