memmove_s, wmemmove_s

Bir arabellek diğerine taşır.Bunlar sürümleridir memmove, wmemmove açıklandığı gibi güvenlik geliştirmeleri ile CRT'deki Güvenlik Özellikleri.

errno_t memmove_s( 
   void *dest, 
   size_t numberOfElements, 
   const void *src, 
   size_t count 
);
errno_t wmemmove_s( 
   wchar_t *dest, 
   size_t numberOfElements, 
   const wchar_t *src, 
   size_t count 
);

Parametreler

  • dest
    Hedef nesne.

  • numberOfElements
    Hedef arabelleğin boyutudur.

  • src
    Kaynak nesne.

  • count
    Bayt sayısı (memmove_s) veya karakter (wmemmove_s) kopyalamak için.

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

modifiye edilmemiş

herhangi bir

< count

herhangi bir

ERANGE

modifiye edilmemiş

Notlar

Kopya count bayt karakterler, src için dest*.* Bazı bölgelerde kaynak alanı ve hedef üst üste gelirse, memmove_s üzerine önce örtüşen özgün kaynak dosyadaki kopyalanır sağlar.

dest Veya src bir null işaretçi veya hedef dize çok küçükse, bu işlevler bir geçersiz parametre işleyicisi açıklandığı şekilde harekete 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

memmove_s

<string.h>

wmemmove_s

<wchar.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// crt_memmove_s.c
//
// The program demonstrates the 
// memmove_s function which works as expected
// for moving overlapping regions.

#include <stdio.h>
#include <string.h>

int main()
{
   char str[] = "0123456789";

   printf("Before: %s\n", str);

   // Move six bytes from the start of the string
   // to a new position shifted by one byte. To protect against
   // buffer overrun, the secure version of memmove requires the
   // the length of the destination string to be specified. 

   memmove_s((str + 1), strnlen(str + 1, 10), str, 6); 

   printf_s(" After: %s\n", str);
}

Çıktı

Before: 0123456789
 After: 0012345789

.NET Framework Eşdeğeri

System::Buffer::BlockCopy

Ayrıca bkz.

Başvuru

Ara Bellek Düzenlemesi

_memccpy

memcpy, wmemcpy

strcpy_s, wcscpy_s, _mbscpy_s

strcpy, wcscpy, _mbscpy

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l