Share via


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