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.
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 de retour
la valeur de la propriété dest ;
Notes
memcpy copie count octets de src vers dest ; wmemcpy copie count caractères larges (sur deux octets). Si la source et la destination se chevauchent, le comportement de memcpy n'est pas défini. Utilisez memmove pour gérer les régions qui se chevauchent.
Note de sécurité |
---|
Assurez-vous que la mémoire tampon de destination est d'une taille identique ou supérieure à celle de la mémoire tampon source.Pour plus d'informations, voir Solutions contre les dépassements de mémoire tampon. |
Note de sécurité |
---|
É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 à SDL.Les appels de memcpy introduits dans le code source d'applications sont conformes à SDL seulement quand cette utilisation a été vérifiée par des experts en sécurité. |
Les fonctions memcpy et wmemcpy seront déconseillées seulement si la constante _CRT_SECURE_DEPRECATE_MEMORY est définie avant l'instruction d'inclusion pour que les fonctions soient déconseillées, comme dans l'exemple ci-dessous :
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>
ou
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Configuration requise
Routine |
En-tête requis |
---|---|
memcpy |
<memory.h> ou <string.h> |
wmemcpy |
<wchar.h> |
Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.
Exemple
Consultez memmove pour un exemple d'utilisation de memcpy.
Voir aussi
Référence
Manipulation de la mémoire tampon
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l