memcpy
, wmemcpy
Copia i byte tra i buffer. Sono disponibili versioni più sicure di queste funzioni; vedere memcpy_s
, wmemcpy_s
.
Sintassi
void *memcpy(
void *dest,
const void *src,
size_t count
);
wchar_t *wmemcpy(
wchar_t *dest,
const wchar_t *src,
size_t count
);
Parametri
dest
Nuovo buffer.
src
Buffer da cui copiare.
count
Numero di caratteri da copiare.
Valore restituito
Valore di dest
.
Osservazioni:
memcpy
copia count
i byte da src
a dest
; wmemcpy
copia count
caratteri wide. Se le aree di origine e di destinazione si sovrappongono, il comportamento di memcpy
non è definito. Usare memmove
per gestire le aree di sovrapposizione.
Importante
Assicurarsi che il buffer di destinazione sia sufficientemente grande da contenere il numero di caratteri copiati. Per altre informazioni, vedere Evitare sovraccarichi del buffer.
Importante
Poiché così tanti sovraccarichi del buffer, e quindi potenziali exploit di sicurezza, sono stati tracciati per un utilizzo improprio di , questa funzione è elencata tra le funzioni "escluse" dal ciclo di memcpy
vita dello sviluppo della sicurezza (SDL). Alcune classi di libreria VC++ potrebbero continuare a usare memcpy
. Inoltre, l'utilità di ottimizzazione del compilatore VC++ a volte emette chiamate a memcpy
. Il prodotto Visual C++ viene sviluppato in conformità con il processo SDL, quindi l'utilizzo di questa funzione bloccata è stato esaminato attentamente. In caso di utilizzo della funzione da parte di una libreria, le chiamate sono state analizzate attentamente per assicurare il blocco dei sovraccarichi del buffer attraverso tali chiamate. Nel caso del compilatore, a volte alcuni modelli di codice vengono riconosciuti come identici rispetto al modello di memcpy
e vengono quindi sostituiti con una chiamata alla funzione. In questi casi, l'utilizzo di memcpy
non è più rischioso di quanto lo sarebbero state le istruzioni originali; è stata semplicemente eseguita l'ottimizzazione a una chiamata per la funzione con prestazioni ottimizzate memcpy
. Proprio come l'uso di funzioni CRT "sicure" non garantisce la sicurezza (rendono più difficile essere non sicuri), l'uso di funzioni "vietate" non garantisce il pericolo (richiedono solo un maggiore controllo per garantire la sicurezza).
Poiché memcpy
l'utilizzo da parte del compilatore e delle librerie VC++ è stato esaminato con attenzione, queste chiamate sono consentite all'interno del codice che altrimenti è conforme a SDL. memcpy
le chiamate introdotte nel codice sorgente dell'applicazione sono conformi solo a SDL quando tale uso è stato esaminato dagli esperti di sicurezza.
Le memcpy
funzioni e wmemcpy
sono deprecate solo se la costante _CRT_SECURE_DEPRECATE_MEMORY
viene definita prima dell'istruzione #include
, come negli esempi seguenti:
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>
or
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
memcpy |
<memory.h> oppure <string.h> |
wmemcpy |
<wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Vedere memmove
per un esempio di come usare memcpy
.
Vedi anche
Manipolazione del buffer
_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