memmove_s, wmemmove_s
Déplace un tampon vers un autre. Il s'agit de versions de memmove, wmemmove avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 sourcecount
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 d'échec.
Conditions d'erreur
dest |
numberOfElements |
src |
Valeur de retour |
Contenu de dest. |
---|---|---|---|---|
NULL |
any |
any |
EINVAL |
non modifié |
any |
any |
NULL |
EINVAL |
non modifié |
any |
< count |
any |
ERANGE |
non modifié |
Notes
Copie des octets count de caractères depuis src vers dest*.* Si certaines zones de la zone de source et de destination se chevauchent, memmove_s garantit que les octets de source d'origine dans la région de chevauchement sont copiés avant d'être remplacés.
Si dest ou si src est un pointeur null ou si la chaîne de destination est trop petite, ces fonctions appellent le gestionnaire de paramètres non valides, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL et définissent errno avec la valeur EINVAL.
Configuration requise
Routine |
En-tête requis |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Pour plus d'informations sur la compatibilité, 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
Voir aussi
Référence
Manipulation de la 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