Partager via


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

_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