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