memcpy_s
, wmemcpy_s
Copie des octets entre les mémoires tampon. Ces fonctions sont des versions de , wmemcpy
avec des améliorations de memcpy
sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.
Syntaxe
errno_t memcpy_s(
void *dest,
size_t destSize,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t destSize,
const wchar_t *src,
size_t count
);
Paramètres
dest
Nouvelle mémoire tampon.
destSize
Taille de la mémoire tampon de destination, en octets pour memcpy_s
et caractères larges (wchar_t
) pour wmemcpy_s
.
src
Mémoire tampon à partir de laquelle effectuer la copie.
count
Nombre de caractères à 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 |
destSize |
src |
count |
Valeur retournée | Contenu de dest |
---|---|---|---|---|---|
tous | tous | tous | 0 | 0 | Non modifié |
NULL |
tous | tous | Différent de zéro | EINVAL |
Non modifié |
tous | tous | NULL |
Différent de zéro | EINVAL |
dest est effacé |
tous | < count |
tous | Différent de zéro | ERANGE |
dest est effacé |
Notes
memcpy_s
copie les count
octets de src
vers dest
; wmemcpy_s
copie des count
caractères larges. Si les régions source et de destination se chevauchent, le comportement d’une memcpy_s
région n’est pas défini. Utilisez memmove_s
pour gérer les régions qui se chevauchent.
Ces fonctions valident leurs paramètres. S’il count
n’est pas zéro et dest
s’il src
s’agit d’un pointeur null, ou destSize
est inférieur count
à , ces fonctions appellent le gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, ces fonctions retournent EINVAL
ou ERANGE
définissent errno
la valeur de retour.
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 |
---|---|
memcpy_s |
<memory.h> ou <string.h> |
wmemcpy_s |
<wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// 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");
}
0 1 4 9 16 25 36 49 64 81
Voir aussi
Manipulation des mémoires tampons
_memccpy
memchr
, wmemchr
memcmp
, wmemcmp
memmove
, wmemmove
memset
, wmemset
strcpy
, wcscpy
, _mbscpy
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
, _mbsncpy_l
strncpy_s
, _strncpy_s_l
, wcsncpy_s
, _wcsncpy_s_l
, _mbsncpy_s
, _mbsncpy_s_l
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour