Condividi tramite


memcpy, wmemcpy

Copia i byte tra i buffer. Sono disponibili versioni più sicure di queste funzioni. Vedere 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 );

Parametri

  • dest
    Nuovo buffer.

  • src
    Buffer da cui copiare.

  • count
    Numero di caratteri da copiare.

Valore restituito

Valore di dest.

Note

memcpy copia count byte da src a dest; wmemcpy copia count caratteri wide (due byte). Se l'origine e la destinazione si sovrappongono, il comportamento di memcpy non è definito. Usare memmove per gestire le aree di sovrapposizione.

Nota sulla sicurezzaNota sulla sicurezza

Verificare che il buffer di destinazione abbia una dimensione maggiore o uguale al buffer di origine.Per altre informazioni, vedere Evitare sovraccarichi del buffer.

Nota sulla sicurezzaNota sulla sicurezza

Poiché sono stati rilevati molti sovraccarichi del buffer e, di conseguenza, potenziali attacchi alla sicurezza dovuti a un utilizzo non corretto di memcpy, questa funzione viene elencata tra le funzioni "bloccate" da Security Development Lifecycle (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.Il semplice utilizzo delle funzioni CRT "sicure" non garantisce la protezione (rendono solo il sistema un po' meno insicuro), così come l'utilizzo delle funzioni "bloccate" non espone maggiormente a rischi (richiedono solo un controllo maggiore che ne garantisca la sicurezza)

Poiché l'utilizzo di memcpy da parte del compilatore e delle librerie VC++ è stato analizzato molto in dettaglio, queste chiamate sono permesse all'interno del codice conforme a SDL.Le chiamate a memcpy introdotte nel codice sorgente dell'applicazione sono conformi a SDL solo quando il loro utilizzo è stato esaminato da esperti di sicurezza.

Le funzioni memcpy e wmemcpy verranno deprecate solo se la costante _CRT_SECURE_DEPRECATE_MEMORY è definita prima dell'istruzione di inclusione in modo che funzioni vengano deprecate, come nell'esempio seguente:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

oppure

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Requisiti

Routine

Intestazione obbligatoria

memcpy

<memory.h> o <string.h>

wmemcpy

<wchar.h>

Per altre informazioni sulla compatibilità, vedere la sezione Compatibilità nell'introduzione.

Esempio

Vedere memmove per un esempio sull'utilizzo di memcpy.

Vedere anche

Riferimenti

Modifica 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