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 src
dest
kopyalar; 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 memcpy
devam ettiğini gözlemleyebilirsiniz. Ayrıca, VC++ derleyici iyileştiricisinin bazen çağrısı memcpy
yaydığı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 memcpy
aynı 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 memcpy
iliş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