memmove_s, wmemmove_s
Verschiebt einen Puffer in einen anderen.Dies sind Versionen von memmove, wmemmove mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im CRT.
errno_t memmove_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemmove_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Parameter
dest
Zielobjekt.numberOfElements
Größe des Zielpuffers.src
Quellobjekt.count
Anzahl von Bytes kopiert werden sollen (memmove_s) oder Zeichen (wmemmove_s).
Rückgabewert
Beliebige wenn erfolgreich; Fehlercode bei Fehlern ein
Fehlerbedingungen
dest |
numberOfElements |
src |
Rückgabewert |
Inhalt von dest |
---|---|---|---|---|
NULL |
alle |
alle |
EINVAL |
nicht geändert |
alle |
alle |
NULL |
EINVAL |
nicht geändert |
alle |
< count |
alle |
ERANGE |
nicht geändert |
Hinweise
Kopiert Bytes count Zeichen aus src zu dest*.* Wenn einige Bereiche des Quellbereichs und des Ziels überschneiden, wird sichergestellt, dass die ursprüngliche Quelle memmove_s Bytes im überlappenden Bereich kopiert werden, bevor diese überschrieben wird.
Wenn rufen dest oder wenn src ein NULL-Zeiger ist, oder wenn die Zielzeichenfolge zu klein ist, diese Funktionen einen ungültigen Parameter für ein, wie in Parametervalidierung beschrieben.Wenn die Ausführung fortgesetzt werden kann, darf dieser Funktionen geben EINVAL festlegen und errno zu EINVAL.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_memmove_s.c
//
// The program demonstrates the
// memmove_s function which works as expected
// for moving overlapping regions.
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "0123456789";
printf("Before: %s\n", str);
// Move six bytes from the start of the string
// to a new position shifted by one byte. To protect against
// buffer overrun, the secure version of memmove requires the
// the length of the destination string to be specified.
memmove_s((str + 1), strnlen(str + 1, 10), str, 6);
printf_s(" After: %s\n", str);
}
Output
Before: 0123456789
After: 0012345789
.NET Framework-Entsprechung
Siehe auch
Referenz
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l