Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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