memcpy, wmemcpy

Kopiuje bajtów pomiędzy buforów.Dostępne są bezpieczniejsze wersje tych funkcji, zobacz 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 );

Parametry

  • dest
    Bufor nowego.

  • src
    Bufor do skopiowania.

  • count
    Liczba znaków do skopiowania.

Wartość zwracana

Wartość dest.

Uwagi

memcpykopiuje count bajtów z src do dest; wmemcpy kopii count znaków (dwóch w bajtach).Jeśli źródłowa i docelowa nakładają się, zachowanie memcpy nie jest zdefiniowana.Użyj memmove do obsługi nakładające się obszary.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Upewnij się, czy bufor docelowy jest taki sam lub większy rozmiar niż źródłowego buforu.Aby uzyskać więcej informacji, zobacz Unikanie przepełnień bufora.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Ponieważ aż tylu przekroczenia buforu i zabezpieczeniach potencjalnych w związku z tym, że znaczniki zostały dodane do nieprawidłowa składnia memcpy, ta funkcja jest wyświetlana wśród "zakazanych" funkcje przez cyklem życia rozwoju zabezpieczeń (SDL).Może Zwróć uwagę, że niektóre VC ++ biblioteki klas nadal korzystać memcpy.Ponadto można zauważyć, że optymalizator kompilatora VC ++ czasami emituje wywołania memcpy.Zgodnie z procesem SDL informacji uzyskanych produktów Visual C++ i w związku z tym użycie tej funkcji zakazanych ściśle oceniono.W przypadku biblioteki użytkowania, wywołania metody zostały uważnie kontroli aby upewnić się, że przekroczenia buforu nie będzie miał za pośrednictwem tych połączeń.W przypadku kompilator, czasami pewne wzorce kodu są rozpoznawane jako identyczne struktury memcpyi w związku z tym zostaną zastąpione po wywołaniu funkcji.W takich przypadkach korzystanie z memcpy jest niebezpieczny nie więcej niż byłaby oryginalnymi instrukcjami; mają one po prostu zoptymalizowany pod kątem po wywołaniu przedstawić wydajności memcpy funkcji.Podobnie jak używanie funkcji CRT "safe" nie gwarantuje bezpieczeństwa (one po prostu utrudniać niebezpieczną) Użyj funkcji "zakazanych" nie gwarantuje zagrożenia (tylko wymagają oni większą kontrolę w celu zapewnienia bezpieczeństwa)

Ponieważ memcpy więc uważnie kontroli wykorzystania przez VC ++ kompilator i bibliotek, te wywołania są dozwolone w przeciwnym razie jest zgodne z SDL kodem.memcpypołączeń wprowadzony w kodzie źródłowym aplikacji są zgodne z SDL tylko w przypadku, gdy używające protokołu ma zostały sprawdzone przez ekspertów zabezpieczeń.

memcpy i wmemcpy funkcje tylko zostanie zastąpiona, jeśli stała _CRT_SECURE_DEPRECATE_MEMORY jest zdefiniowana przed instrukcji włączenia w kolejności do obowiązków, które mają być zastąpiona, takich jak w poniższym przykładzie:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

lub

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Wymagania

Procedura

Wymagany nagłówek

memcpy

< memory.h > lub < string.h >

wmemcpy

< wchar.h >

Dodatkowe informacje o zgodności — zobacz: Zgodność we Wprowadzeniu.

Przykład

Zobacz memmove przykłady sposobów użycia memcpy.

Zobacz też

Informacje

Manipulowanie buforem

_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