memcpy, wmemcpy
Bytes de cópias entre buffers. Estão disponíveis versões mais seguras dessas funções; consulte memcpy_s, wmemcpy_s.
void *memcpy( void *dest, const void *src, size_t count ); wchar_t *wmemcpy( wchar_t *dest, const wchar_t *src, size_t count );
Parâmetros
dest
Novo buffer.src
Buffer para copiar de.count
Número de caracteres a serem copiados.
Valor de retorno
O valor de dest.
Comentários
memcpycópias count bytes do src para dest; wmemcpy cópias count caracteres largos (dois bytes). Se a origem e o destino se sobrepõem, o comportamento de memcpy é indefinido. Use memmove para lidar com regiões sobrepostas.
Observação de segurança |
---|
Certifique-se de que o buffer de destino é o mesmo tamanho ou maior que o buffer de origem.Para obter mais informações, consulte Evitando saturações de buffer. |
Observação de segurança |
---|
Porque muitos saturações de buffer e, portanto, possíveis explorações de segurança, têm foi rastreadas para uso impróprio de memcpy, essa função está listada entre as funções de "proibidas" pelo Security Development Lifecycle (SDL).Você pode observar que algumas classes de biblioteca do VC + + continuam a usar memcpy.Além disso, você pode observar que o otimizador do compilador do VC + +, às vezes, emite chamadas para memcpy.O produto Visual C++ foi desenvolvido de acordo com o processo SDL e, portanto, o uso dessa função proibida foi intimamente avaliado.No caso de biblioteca usá-lo, as chamadas foram examinadas com cuidado para garantir que estouros de buffer não poderá passar essas chamadas.No caso do compilador, às vezes, certos padrões de código são reconhecidos como idênticos para o padrão de memcpye, portanto, são substituídas por uma chamada à função.Nesses casos, o uso de memcpy é não é mais seguro do que teria sido instruções originais; eles simplesmente foram otimizados para uma chamada para o desempenho adequado memcpy função.Assim como o uso de funções de CRT "seguras" não garante a segurança (eles somente dificultam a não ser seguro), o uso de funções de "proibidos" não garante o perigo (eles exigem maior controle para garantir a segurança apenas) Como memcpy uso pelo compilador VC + + e bibliotecas foram examinado tão cuidadosamente, essas chamadas são permitidas no código que está em conformidade com o SDL.memcpychamadas introduzidas no código fonte do aplicativo só são compatíveis com o SDL quando foi revisado que usam por especialistas em segurança. |
O memcpy e wmemcpy funções só serão substituídas se a constante _CRT_SECURE_DEPRECATE_MEMORY está definido antes da declaração de inclusão para que as funções a ser substituído, tal como no exemplo a seguir:
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>
ou
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
memcpy |
< memory.h > ou < String. h > |
wmemcpy |
< WCHAR. h > |
Para obter informações adicionais sobre compatibilidade, consulte Compatibilidade na Introdução.
Exemplo
Consulte memmove para obter um exemplo de como usar memcpy.
Consulte também
Referência
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l