Aracılığıyla paylaş


memcpy, wmemcpy

Arabellekler arasında bayt kopyalar. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. memcpy_s, wmemcpy_s.

Sözdizimi

void *memcpy(
   void *dest,
   const void *src,
   size_t count
);
wchar_t *wmemcpy(
   wchar_t *dest,
   const wchar_t *src,
   size_t count
);

Parametreler

dest
Yeni arabellek.

src
Kopyalanacak arabellek.

count
Kopyalanacak karakter sayısı.

Dönüş değeri

değeridir dest.

Açıklamalar

memcpy baytları count öğesine srcdestkopyalar; wmemcpy geniş karakterleri kopyalar count . Kaynak ve hedef bölgeler çakışıyorsa, öğesinin memcpy davranışı tanımlanmamıştır. Çakışan bölgeleri işlemek için kullanın memmove .

Önemli

Hedef arabelleğin kopyalanan karakter sayısını karşılayacak kadar büyük olduğundan emin olun. Daha fazla bilgi için bkz . Arabellek taşmalarından kaçınma.

Önemli

Bu kadar çok arabellek taşması ve dolayısıyla olası güvenlik açıkları yanlış kullanımına kadar izlendiğinden memcpy, bu işlev Güvenlik Geliştirme Yaşam Döngüsü (SDL) tarafından "yasaklanan" işlevler arasında listelenir. Bazı VC++ kitaplık sınıflarının kullanmaya memcpydevam ettiğini gözlemleyebilirsiniz. Ayrıca, VC++ derleyici iyileştiricisinin bazen çağrısı memcpyyaydığını gözlemleyebilirsiniz. Visual C++ ürünü SDL işlemine uygun olarak geliştirilmiştir ve bu nedenle yasaklanan bu işlevin kullanımı yakından değerlendirilmiştir. Kitaplık kullanımı söz konusu olduğunda, arabellek taşmalarına bu çağrılar aracılığıyla izin verilmediğinden emin olmak için çağrılar dikkatle incelenmiştir. Derleyici söz konusu olduğunda, bazen bazı kod desenleri deseniyle memcpyaynı olarak kabul edilir ve bu nedenle işlevine yapılan bir çağrı ile değiştirilir. Bu gibi durumlarda, kullanımı memcpy özgün yönergelerden daha güvenli değildir; bunlar yalnızca performans ayarlı memcpy işlev çağrısı için iyileştirilmiştir. "Güvenli" CRT işlevlerinin kullanımı güvenliği garanti etmediğinden (yalnızca güvenli olmamasını zorlaştırdığı gibi), "yasaklanmış" işlevlerin kullanılması tehlikeyi garanti etmez (yalnızca güvenliği sağlamak için daha fazla inceleme gerektirir).

memcpy VC++ derleyicisi ve kitaplıkları tarafından kullanım çok dikkatli bir şekilde incelendiği için, bu çağrılara SDL ile uyumlu olmayan kod içinde izin verilir. memcpy Uygulama kaynak kodunda kullanıma sunulan çağrılar yalnızca bu kullanım güvenlik uzmanları tarafından gözden geçirildiğinde SDL ile uyumlu olur.

memcpy ve wmemcpy işlevleri yalnızca aşağıdaki örneklerde gösterildiği gibi, sabit _CRT_SECURE_DEPRECATE_MEMORY deyiminden #include önce tanımlanmışsa kullanım dışı kalır:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

veya

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Gereksinimler

Yordam Gerekli başlık
memcpy <memory.h> veya <string.h>
wmemcpy <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

nasıl kullanılacağına memcpyilişkin bir örnek için bkzmemmove. .

Ayrıca bkz.

Arabellek işleme
_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