memcpy
, wmemcpy
Kopiert Bytes zwischen Puffern. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter memcpy_s
, wmemcpy_s
.
Syntax
void *memcpy(
void *dest,
const void *src,
size_t count
);
wchar_t *wmemcpy(
wchar_t *dest,
const wchar_t *src,
size_t count
);
Parameter
dest
Neuer Puffer.
src
Der Puffer, aus dem kopiert werden soll.
count
Anzahl der zu kopierenden Zeichen.
Rückgabewert
Der Wert von dest
.
Hinweise
memcpy
kopiert count
Bytes von src
nach dest
; wmemcpy
kopiert count
Breitzeichen. Wenn sich Quell- und Zielregionen überlappen, ist das Verhalten von memcpy
undefiniert. Verwendung memmove
um überlappende Bereiche zu behandeln.
Wichtig
Stellen Sie sicher, dass der Zielpuffer groß genug ist, um die Anzahl der kopierten Zeichen zu verarbeiten. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
Wichtig
Da so viele Pufferüberläufe, und damit einhergehend potenzielle Sicherheitslücken, auf eine falsche Verwendung von memcpy
zurückzuführen sind, befindet sich diese Funktion unter den von Security Development Lifecycle (SDL) „gesperrten“ Funktionen. Möglicherweise stellen Sie fest, dass einige VC++-Bibliotheksklassen weiterhin memcpy
verwenden. Darüber hinaus werden Sie feststellen, dass der VC++-Compileroptimierer manchmal Aufrufe von memcpy
ausgibt. Das Visual C++-Produkt wird gemäß des SDL-Prozesses entwickelt; die Verwendung dieser gesperrten Funktion wurde daher sorgfältig geprüft. Bei Verwendung in der Bibliothek wurden die Aufrufe sorgfältig geprüft, um sicherzustellen, dass Pufferüberläufe über diese Aufrufe nicht zulässig sind. Im Falle des Compilers werden manchmal bestimmte Codemuster als identisch mit dem Muster von memcpy
erkannt und daher mit einem Aufruf der Funktion ersetzt. In solchen Fällen ist die Verwendung von memcpy
nicht unsicherer als die ursprünglichen Anweisungen; sie wurden einfach für einen Aufruf der leistungsoptimierten memcpy
-Funktion optimiert. Genau wie die Verwendung „sicherer“ CRT-Funktionen keine Sicherheit garantiert, bedeutet die Verwendung von „gesperrten“ Funktionen keine unmittelbare Gefahr (diese müssen nur sorgfältig überprüft werden, damit die Sicherheit gewährleistet ist).
Da die Verwendung von memcpy
durch den VC++-Compiler und die -Bibliotheken sorgfältig geprüft wurde, sind diese Aufrufe innerhalb von Code, der ansonsten SDL-kompatibel ist, zulässig. memcpy
-Aufrufe, die in den Anwendungsquellcode eingeführt wurden, sind nur kompatibel mit SDL, wenn diese Verwendung von Sicherheitsexperten überprüft wurde.
Die Funktionen memcpy
und wmemcpy
sind nur veraltet, wenn die Konstante _CRT_SECURE_DEPRECATE_MEMORY
vor der #include
-Anweisung definiert wird, wie in den folgenden Beispielen gezeigt:
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>
oder
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Anforderungen
Routine | Erforderlicher Header |
---|---|
memcpy |
<memory.h> oder <string.h> |
wmemcpy |
<wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
Ein Beispiel für die Verwendung von memcpy
finden Sie unter memmove
.
Siehe auch
Pufferbearbeitung
_memccpy
memchr
, wmemchr
memcmp
, wmemcmp
memmove
, wmemmove
memset
, wmemset
strcpy_s
, wcscpy_s
, _mbscpy_s
strncpy_s
, _strncpy_s_l
, wcsncpy_s
, _wcsncpy_s_l
, _mbsncpy_s
, _mbsncpy_s_l
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für