memmove_s
, wmemmove_s
Déplace une mémoire tampon vers une autre. Ces fonctions sont des versions de , wmemmove
avec des améliorations de memmove
sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.
Syntaxe
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 retournée
Zéro si l’opération a réussi ; code d’erreur en cas de échec.
Conditions de l’erreur
dest |
numberOfElements |
src |
Valeur retournée | Contenu de dest |
---|---|---|---|---|
NULL |
tous | tous | EINVAL |
non modifié |
tous | tous | NULL |
EINVAL |
non modifié |
tous | < count |
tous | ERANGE |
non modifié |
Notes
Copie les count
octets de caractères de src
vers dest
. Si certaines parties de la source et des régions de destination se chevauchent, memmove_s
vérifiez que les octets sources d’origine de la région qui se chevauchent sont copiés avant d’être remplacés.
Si dest
ou s’il src
s’agit d’un pointeur Null ou si la chaîne de destination est trop petite, ces fonctions appellent un gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL
et définissent errno
avec la valeur EINVAL
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête requis |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
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
Voir aussi
Manipulation des mémoires tampons
_memccpy
memcpy
, wmemcpy
strcpy_s
, wcscpy_s
, _mbscpy_s
strcpy
, wcscpy
, _mbscpy
strncpy_s
, _strncpy_s_l
, wcsncpy_s
, _wcsncpy_s_l
, _mbsncpy_s
, _mbsncpy_s_l
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
, _mbsncpy_l
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour