memcpy_s
, wmemcpy_s
Copie des octets entre les mémoires tampon. Ces fonctions sont des versions de memcpy
, wmemcpy
avec des améliorations de sécurité, comme indiqué dans 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 d’erreur
dest |
destSize |
src |
count |
Valeur retournée | Contenu de dest |
---|---|---|---|---|---|
n'importe laquelle | tous | n'importe laquelle | 0 | 0 | Non modifié |
NULL |
n'importe laquelle | n'importe laquelle | Différent de zéro | EINVAL |
Non modifié |
n'importe laquelle | n'importe laquelle | NULL |
Différent de zéro | EINVAL |
dest est effacé |
n'importe laquelle | < count |
n'importe laquelle | Différent de zéro | ERANGE |
dest est effacé |
Notes
memcpy_s
copie count
octets de src
vers dest
. wmemcpy_s
copie count
caractères larges. Si les régions source et de destination se chevauchent, le comportement de memcpy_s
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 de la mémoire tampon
_memccpy
memchr
, wmemchr
memcmp
, wmemcmp
memmove
, wmemmove
memset
, wmemset
strcpy
, , wcscpy
_mbscpy
strncpy
, , _strncpy_l
, _wcsncpy_l
wcsncpy
, , _mbsncpy
_mbsncpy_l
strncpy_s
, , _strncpy_s_l
, _wcsncpy_s_l
wcsncpy_s
, , _mbsncpy_s
_mbsncpy_s_l