memcpy, wmemcpy

Copie des octets entre les mémoires tampon. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez memcpy_s, wmemcpy_s.

Syntaxe

void *memcpy(
   void *dest,
   const void *src,
   size_t count
);
wchar_t *wmemcpy(
   wchar_t *dest,
   const wchar_t *src,
   size_t count
);

Paramètres

dest
Nouvelle mémoire tampon.

src
Mémoire tampon à partir de laquelle effectuer la copie.

count
Nombre de caractères à copier.

Valeur retournée

la valeur de la propriété dest ;

Notes

memcpy copie count octets de src vers dest. wmemcpy copie count caractères larges. Si les régions source et de destination se chevauchent, le comportement de memcpy n’est pas défini. Utilisez memmove pour gérer les régions qui se chevauchent.

Important

Veillez à ce que la mémoire tampon de destination soit suffisamment grande pour prendre en charge le nombre de caractères copiés. Pour plus d’informations, consultez Solutions contre les dépassements de mémoire tampon.

Important

Étant donné que pour de très nombreux dépassements de mémoire tampon, et donc de failles de sécurité potentielles, une utilisation incorrecte de memcpy a été détectée, cette fonction est répertoriée parmi les fonctions « bannies » par le cycle SDL (Security Development Lifecycle). Vous pouvez remarquer que certaines classes de bibliothèque VC++ continuent à utiliser memcpy. Vous pouvez même remarquer que l'optimiseur du compilateur VC++ émet parfois des appels à memcpy. Le produit Visual C++ est développé conformément au processus SDL, et l'utilisation de cette fonction bannie a donc été évaluée avec attention. Dans le cas de son utilisation dans des bibliothèques, les appels ont été examinés avec soin pour garantir que les dépassements de mémoire tampon ne seront pas autorisés via ces appels. Dans le cas le compilateur, certains modèles de code sont parfois reconnus comme étant identiques au modèle de memcpy et ils sont donc remplacés par un appel à la fonction. Dans ce cas, l'utilisation de memcpy n'est pas plus risquée que les instructions d'origine l'auraient été ; elles ont simplement été optimisées en un appel à la fonction memcpy optimisée pour les performances. Tout comme l'utilisation de fonctions CRT « sécurisées » ne garantit pas la sécurité (elles rendent simplement plus compliquée une utilisation risquée), l'utilisation de fonctions « bannies » ne signifie pas qu'il y a danger à coup sûr (elles nécessitent seulement un examen plus attentif pour garantir la sécurité).

Comme l'utilisation de memcpy par le compilateur et les bibliothèques VC++ a été examinée avec soin, ces appels sont autorisés dans du code qui est conforme au SDL. Les appels de memcpy introduits dans le code source d'applications sont conformes au SDL seulement quand cette utilisation a été vérifiée par des experts en sécurité.

Les fonctions memcpy et wmemcpy sont déconseillées uniquement si la constante _CRT_SECURE_DEPRECATE_MEMORY est définie avant l’instruction #include, comme illustré dans les exemples suivants :

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

or

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Spécifications

Routine En-tête requis
memcpy <memory.h> ou <string.h>
wmemcpy <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

Consultez memmove pour un exemple d’utilisation de memcpy.

Voir aussi

Manipulation de la mémoire tampon
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memmove, wmemmove
memset, wmemset
strcpy_s, wcscpy_s, _mbscpy_s
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l