memcpy_s, wmemcpy_s
Copie des octets entre les mémoires tampons.Ce sont des versions de memcpy, wmemcpy avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.
errno_t memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Paramètres
dest
nouvelle mémoire tampon.numberOfElements
taille de la mémoire tampon de destination.src
Mémoire tampon à copier à partir de.count
Nombre de caractères à copier.
Valeur de retour
Zéro si l'opération a réussi ; code d'erreur en cas de échec.
conditions d'erreur
dest |
numberOfElements |
src |
Valeur de retour |
contenu d' dest |
---|---|---|---|---|
NULL |
quels |
quels |
EINVAL |
non modifié |
quels |
quels |
NULL |
EINVAL |
dest est mis à zéro |
quels |
< count |
quels |
ERANGE |
dest est mis à zéro |
Notes
memcpy_s copie des octets d' count d' src à dest; caractères larges d' count de copies d' wmemcpy_s (deux octets).Si la source et de destination se chevauchent, le comportement d' memcpy_s n'est pas défini.Utilisation memmove_s de gérer superposer des régions.
ces fonctions valident leurs paramètres.si dest ou src est un pointeur null, ou numberOfElements est trop petit pour la mémoire tampon, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions EINVAL de retour et errno défini à EINVAL.
Configuration requise
routine |
en-tête requis |
---|---|
memcpy_s |
<memory.h> ou <string.h> |
wmemcpy_s |
<wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
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");
}
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.
Voir aussi
Référence
Manipulation de mémoire tampon
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l