Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

memcpy_s, wmemcpy_s

Copies d'octets entre les mémoires tampons. Il s'agit de versions de memcpy, wmemcpy avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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
);

dest

Nouvelle mémoire tampon.

numberOfElements

Taille de la mémoire tampon de destination.

src

Mémoire tampon à partir de laquelle copier.

count

Nombre de caractères à copier.

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 de dest.

NULL

ANY

ANY

EINVAL

non modifié

ANY

ANY

NULL

EINVAL

dest est mis à zéro

ANY

< count

ANY

ERANGE

dest est mis à zéro

memcpy_s copie des octets count depuis src vers dest; count copie des caractères larges wmemcpy_s (deux octets). Si les chaînes source et de destination se superposent, le comportement de memcpy_s est non défini. Utilisez memmove_s pour gérer le chevauchement des régions.

Ces fonctions valident leurs paramètres. Si dest ou src est un pointeur null, ou si numberOfElements est trop petite pour la mémoire tampon, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL et définissent errno avec la valeur EINVAL.

Routine

En-tête requis

memcpy_s

<memory.h> ou <string.h>

wmemcpy_s

<wchar.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

// 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 

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft