Freigeben über


memcpy, wmemcpy

Kopiert Bytes zwischen Puffern. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter memcpy_s, wmemcpy_s.

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 (zwei Bytes). Wenn sich Quell und Ziel überlappen, ist das Verhalten von memcpy undefiniert. Verwendung memmove um überlappende Bereiche zu behandeln.

SicherheitshinweisSicherheitshinweis

Stellen Sie sicher, dass der Zielpuffer dieselbe Größe wie der Quellpuffer aufweist bzw. größer ist.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

SicherheitshinweisSicherheitshinweis

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 Bibliotheken so sorgfältig geprüft wurde, sind diese Aufrufe innerhalb des Codes, 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 Sicherheitsfachleuten überprüft wurde.

Die funktionen memcpy und wmemcpy sind nur veraltet, wenn die Konstante _CRT_SECURE_DEPRECATE_MEMORY vor der Einschlussanweisung definiert wird, damit die Funktionen als veraltet markiert werden können, wie zum Beispiel im folgenden Beispiel:

#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>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

Unter memmove finden Sie ein Beispiel zur Verwendung von memcpy.

Siehe auch

Referenz

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