memcpy_s, wmemcpy_s
Kopya bayt arabellekleri arasında.Bunlar sürümleridir memcpy, wmemcpy açıklandığı gibi güvenlik geliştirmeleri ile CRT'deki Güvenlik Özellikleri.
errno_t memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Parametreler
dest
Yeni bir arabellek.numberOfElements
Hedef arabelleğin boyutudur.src
Kopyalamanın yapılacağı arabellek.count
Kopyalanan karakter sayısı.
Dönüş Değeri
Sıfır başarılı olursa; hata durumunda bir hata kodu.
Hata koşulları
dest |
numberOfElements |
src |
Dönüş değeri |
İçeriğidest |
---|---|---|---|---|
NULL |
herhangi bir |
herhangi bir |
EINVAL |
modifiye edilmemiş |
herhangi bir |
herhangi bir |
NULL |
EINVAL |
destsıfırlanmasını |
herhangi bir |
< count |
herhangi bir |
ERANGE |
destsıfırlanmasını |
Notlar
memcpy_scopies count bytes from src to dest; wmemcpy_skopya count geniş karakterler (iki bayt).Kaynak ve hedef çakışma olursa, davranışını memcpy_s tanımlı değil.Use memmove_s üst üste gelen işlenecek.
Bu işlevler, kendi parametreleri doğrulayın.dest Veya src bir null işaretçi veya numberOfElements çok küçük açıklandığı gibi bu işlevler için arabellek geçersiz parametre işleyicisi çağırmak Parametre Doğrulama.Bu işlevler dönüş yürütülmesine devam etmek için izin verilip verilmediğini, EINVAL ve errno için EINVAL.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
memcpy_s |
<memory.h> veya <string.h> |
wmemcpy_s |
<wchar.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Örnek
// crt_memcpy_s.c
// Copy memory in a more secure way.
#include <memory.h>
#include <stdio.h>
int main()
{
int a1[10], a2[100], i;
errno_t err;
// Populate a2 with squares of integers
for (i = 0; i < 100; i++)
{
a2[i] = i*i;
}
// Tell memcpy_s to copy 10 ints (40 bytes), giving
// the size of the a1 array (also 40 bytes).
err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );
if (err)
{
printf("Error executing memcpy_s.\n");
}
else
{
for (i = 0; i < 10; i++)
printf("%d ", a1[i]);
}
printf("\n");
}
.NET Framework Eşdeğeri
Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.
Ayrıca bkz.
Başvuru
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l