Sdílet prostřednictvím


memcpy, wmemcpy

Zkopíruje bajty mezi vyrovnávacími pamětí. K dispozici jsou bezpečnější verze těchto funkcí; viz memcpy_s, wmemcpy_s.

Syntaxe

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
Nová vyrovnávací paměť.

src
Vyrovnávací paměť, ze které se má kopírovat.

count
Počet znaků, které se mají zkopírovat

Vrácená hodnota

Hodnota .dest

Poznámky

memcpy kopíruje count bajty od src do dest; wmemcpy kopíruje count široké znaky. Pokud se zdrojové a cílové oblasti překrývají, chování memcpy není definováno. Slouží memmove ke zpracování překrývajících se oblastí.

Důležité

Ujistěte se, že je cílová vyrovnávací paměť dostatečně velká, aby vyhovovala počtu zkopírovaných znaků. Další informace najdete v tématu Zabránění přetečení vyrovnávací paměti.

Důležité

Vzhledem k tomu, že tolik přetečení vyrovnávací paměti, a tak potenciální zneužití zabezpečení, bylo trasováno na nesprávné použití memcpy, tato funkce je uvedena mezi "zakázané" funkce životního cyklu zabezpečení (SDL). Můžete si všimnout, že některé třídy knihovny VC++ nadále používají memcpy. Kromě toho můžete pozorovat, že optimalizátor kompilátoru VC++ někdy generuje volání memcpy. Produkt Visual C++ je vyvinut v souladu s procesem SDL, a proto bylo použití této zakázané funkce pečlivě vyhodnoceno. V případě použití knihovny byly volání pečlivě kontrolována, aby se zajistilo, že přetečení vyrovnávací paměti nebude povoleno prostřednictvím těchto volání. V případě kompilátoru jsou někdy některé vzory kódu rozpoznány jako identické se vzorem memcpy, a proto jsou nahrazeny voláním funkce. V takových případech není použití memcpy více nebezpečné než původní instrukce; byly jednoduše optimalizovány na volání funkce vyladěné memcpy výkonem. Stejně jako použití "bezpečných" funkcí CRT nezaručuje bezpečnost (jen znesnadní být nebezpečné), použití "zakázaných" funkcí nezaručuje nebezpečí (pouze vyžadují větší kontrolu k zajištění bezpečnosti).

Vzhledem k tomu, že memcpy použití kompilátorem a knihovnami VC++ bylo tak pečlivě prověřeno, jsou tato volání povolena v kódu, který jinak odpovídá SDL. memcpy volání zavedená ve zdrojovém kódu aplikace odpovídají SDL pouze v případech, kdy bylo toto použití zkontrolováno odborníky na zabezpečení.

Funkce memcpy jsou wmemcpy zastaralé, pouze pokud je konstanta _CRT_SECURE_DEPRECATE_MEMORY definovaná před příkazem #include , jako v následujících příkladech:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

nebo

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Požadavky

Rutina Požadovaný hlavičkový soubor
memcpy <memory.h> nebo <string.h>
wmemcpy <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Podívejte se memmove na ukázku použití memcpy.

Viz také

Manipulace s vyrovnávací pamětí
_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