Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir arabelleği diğerine taşır. Bu işlevler, CRT'deki memmove wmemmoveGü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 destkarakter 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 EINVALayarlanı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