Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 ERANGEdé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_lwcsncpy, , _mbsncpy_mbsncpy_l
strncpy_s, , _strncpy_s_l, _wcsncpy_s_lwcsncpy_s, , _mbsncpy_s_mbsncpy_s_l