Bagikan melalui


memcpy, wmemcpy

Menyalin byte antar buffer. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat memcpy_s, wmemcpy_s.

Sintaks

void *memcpy(
   void *dest,
   const void *src,
   size_t count
);
wchar_t *wmemcpy(
   wchar_t *dest,
   const wchar_t *src,
   size_t count
);

Parameter

dest
Buffer baru.

src
Buffer untuk disalin.

count
Jumlah karakter yang akan disalin.

Nilai hasil

Nilai dari dest.

Keterangan

memcpycount menyalin byte dari src ke dest; wmemcpy menyalin count karakter lebar. Jika wilayah sumber dan tujuan tumpang tindih, perilaku memcpy tidak terdefinisi. Gunakan memmove untuk menangani wilayah yang tumpang tindih.

Penting

Pastikan bahwa buffer tujuan cukup besar untuk mengakomodasi jumlah karakter yang disalin. Untuk informasi selengkapnya, lihat Menghindari overruns buffer.

Penting

Karena begitu banyak buffer overruns, dan dengan demikian potensi eksploitasi keamanan, telah ditelusuri untuk penggunaan memcpyyang tidak tepat , fungsi ini tercantum di antara fungsi "dilarang" oleh Siklus Hidup Pengembangan Keamanan (SDL). Anda dapat mengamati bahwa beberapa kelas pustaka VC++ terus menggunakan memcpy. Selain itu, Anda dapat mengamati bahwa pengoptimal kompilator VC++ terkadang memancarkan panggilan ke memcpy. Produk Visual C++ dikembangkan sesuai dengan proses SDL, dan dengan demikian penggunaan fungsi terlarang ini telah dievaluasi dengan cermat. Dalam kasus penggunaan pustaka, panggilan telah diteliti dengan hati-hati untuk memastikan bahwa buffer overruns tidak akan diizinkan melalui panggilan ini. Dalam kasus pengkompilasi, kadang-kadang pola kode tertentu dikenali sebagai identik dengan pola memcpy, dan dengan demikian diganti dengan panggilan ke fungsi. Dalam kasus seperti itu, penggunaannya memcpy tidak lebih tidak aman daripada instruksi asli; mereka hanya dioptimalkan untuk panggilan ke fungsi yang disetel memcpy performa. Sama seperti penggunaan fungsi CRT "aman" tidak menjamin keamanan (mereka hanya membuatnya lebih sulit untuk menjadi tidak aman), penggunaan fungsi "dilarang" tidak menjamin bahaya (mereka hanya memerlukan pengamatan yang lebih besar untuk memastikan keamanan).

Karena memcpy penggunaan oleh pengkompilasi dan pustaka VC++ telah diteliti dengan cermat, panggilan ini diizinkan dalam kode yang jika tidak sesuai dengan SDL. memcpy panggilan yang diperkenalkan dalam kode sumber aplikasi hanya sesuai dengan SDL ketika penggunaan tersebut telah ditinjau oleh pakar keamanan.

Fungsi memcpy dan wmemcpy hanya tidak digunakan lagi jika konstanta _CRT_SECURE_DEPRECATE_MEMORY ditentukan sebelum #include pernyataan, seperti dalam contoh berikut:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>

or

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Persyaratan

Rutin Header yang diperlukan
memcpy <memory.h> atau <string.h>
wmemcpy <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Lihat memmove untuk sampel cara menggunakan memcpy.

Lihat juga

Manipulasi buffer
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memmove, wmemmove
memset, wmemset
strcpy_s, , wcscpy_s_mbscpy_s
strncpy_s, , _strncpy_s_lwcsncpy_s, _wcsncpy_s_l, , _mbsncpy_s,_mbsncpy_s_l