memmove_s
, wmemmove_s
Bir arabelleği diğerine taşır. Bu işlevler, CRT'deki memmove
wmemmove
Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümleridir.
Sözdizimi
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 boyutu.
src
Kaynak nesne.
count
Kopyalanacak bayt (memmove_s
) veya karakter sayısıwmemmove_s
.
Dönüş değeri
Başarılı olursa sıfır; hata durumunda hata kodu
Hata koşulları
dest |
numberOfElements |
src |
Dönüş değeri | İçeriği dest |
---|---|---|---|---|
NULL |
herhangi bir | herhangi bir | EINVAL |
değiştirilmedi |
herhangi bir | herhangi bir | NULL |
EINVAL |
değiştirilmedi |
herhangi bir | < count |
herhangi bir | ERANGE |
değiştirilmedi |
Açıklamalar
'den'e src
dest
karakter baytlarını count
kopyalar. Kaynağın ve hedef bölgelerin bazı bölümleri çakışıyorsa, memmove_s
çakışan bölgedeki özgün kaynak baytların üzerine yazılmadan önce kopyalanmasını sağlar.
Null işaretçiyse dest
veya ise src
veya hedef dize çok küçükse, bu işlevler Parametre doğrulama bölümünde açıklandığı gibi geçersiz bir parametre işleyicisi çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlevler döndürülerek EINVAL
olarak EINVAL
ayarlanırerrno
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Ö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
Ayrıca bkz.
Arabellek işleme
_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