memcpy_s, wmemcpy_s
Kopiert Bytes zwischen Puffern. Diese Versionen von memcpy, wmemcpy enthalten Sicherheitserweiterungen wie unter Sicherheitsfunktionen in der CRT beschrieben.
errno_t memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Parameter
dest
Neuer Puffer.numberOfElements
Größe des Zielpuffers.src
Puffer, aus der kopiert.count
Anzahl Zeichen zu kopieren.
Rückgabewert
Null, wenn erfolgreich, ein Fehlercode, wenn ein Fehler auftritt.
Fehlerbedingungen
dest |
numberOfElements |
src |
Rückgabewert |
Inhalt von dest |
---|---|---|---|---|
NULL |
any |
any |
EINVAL |
nicht geändert |
any |
any |
NULL |
EINVAL |
dest wird aus null angehalten |
any |
< count |
any |
ERANGE |
dest wird aus null angehalten |
Hinweise
memcpy_s kopiert count Bytes von src in dest; wmemcpy_s Kopien count Breitzeichen (zwei Bytes). Wenn die Quelle und Ziel überschneiden, wird das Verhalten von memcpy_s nicht definiert. Verwenden Sie memmove_s, überlappende Bereiche zu behandeln.
Diese Funktionen überprüfen ihre Parameter. Wenn dest oder src ein NULL-Zeiger ist oder numberOfElements für den Puffer zu klein ist, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EINVAL zurück und stellen errno auf EINVAL ein.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
memcpy_s |
<memory.h> oder <string.h> |
wmemcpy_s |
<wchar.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_memcpy_s.c
// Copy memory in a more secure way.
#include <memory.h>
#include <stdio.h>
int main()
{
int a1[10], a2[100], i;
errno_t err;
// Populate a2 with squares of integers
for (i = 0; i < 100; i++)
{
a2[i] = i*i;
}
// Tell memcpy_s to copy 10 ints (40 bytes), giving
// the size of the a1 array (also 40 bytes).
err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );
if (err)
{
printf("Error executing memcpy_s.\n");
}
else
{
for (i = 0; i < 10; i++)
printf("%d ", a1[i]);
}
printf("\n");
}
.NET Framework-Entsprechung
Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.
Siehe auch
Referenz
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l