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

Ara Bellek Düzenlemesi

_memccpy

memchr, wmemchr

memcmp, wmemcmp

memmove, wmemmove

memset, wmemset

strcpy, wcscpy, _mbscpy

strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l