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ń |
---|
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ń |
---|
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
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l