memmove_s, wmemmove_s
Déplace une mémoire tampon à un autre.Ce sont des versions de memmove, wmemmove avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du 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
);
Paramètres
dest
objet de destination.numberOfElements
taille de la mémoire tampon de destination.src
objet source.count
Nombre d'octets (memmove_s) ou de caractères (wmemmove_s) à copier.
Valeur de retour
Zéro si l'opération a réussi ; code d'erreur en cas de défaillance
conditions d'erreur
dest |
numberOfElements |
src |
Valeur de retour |
contenu d' dest |
---|---|---|---|---|
NULL |
quels |
quels |
EINVAL |
non modifié |
quels |
quels |
NULL |
EINVAL |
non modifié |
quels |
< count |
quels |
ERANGE |
non modifié |
Notes
Copie des octets d' count de caractères d' src à dest*.* Si certaines zones de la zone de source et de chevauchement de destination, memmove_s garantit que les octets de source d'origine dans la zone sont copiés avant d'être remplacé.
si dest ou si src est un pointeur null, ou si la chaîne de destination est trop petite, ces fonctions appellent un gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres .Si est autorisé à l'exécution de se poursuivre, ces fonctions EINVAL de retour et errno défini à EINVAL.
Configuration requise
routine |
en-tête requis |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// 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);
}
Sortie
Before: 0123456789
After: 0012345789
Équivalent .NET Framework
System : : mémoire tampon : : BlockCopy
Voir aussi
Référence
Manipulation de mémoire tampon
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l