Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Bytes de cópias entre buffers.Essas são sistema autônomo versões de memcpy, wmemcpy com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no CRT.
errno_t memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Parâmetros
dest
Novo buffer.numberOfElements
dimensionar do buffer de destino.src
Para copiar de buffer.count
Número de caracteres a serem copiados.
Valor de retorno
Zero se for bem-sucedida; um código de erro em caso de falha.
Condições de erro
dest |
numberOfElements |
src |
Valor de Retorno |
Sumário de dest |
|---|---|---|---|---|
NULL |
any |
any |
EINVAL |
não modificado |
any |
any |
NULL |
EINVAL |
dest é zerada |
any |
< count |
any |
ERANGE |
dest é zerada |
Comentários
memcpy_s cópias count bytes do src para dest; wmemcpy_s cópias count caracteres de largo (dois bytes). Se fonte e destino sobrepostas, o comportamento de memcpy_s não está definida. Use memmove_s para lidar com regiões sobrepostas.
Essas funções validar seus parâmetros.If dest ou src é um ponteiro nulo, ou numberOfElements é muito pequeno para o buffer, essas funções chamar o manipulador de parâmetro inválido sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções retornam EINVAL e conjunto errno para EINVAL.
Requisitos
Rotina |
Cabeçalho necessário |
|---|---|
memcpy_s |
<memória.h> ou <string.h> |
wmemcpy_s |
<wchar.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Exemplo
// crt_memcpy_s.c
// Copy memory in a more secure way.
#include <memory.h>
#include <stdio.h>
int main()
{
int a1[10], a2[100], i;
errno_t err;
// Populate a2 with squares of integers
for (i = 0; i < 100; i++)
{
a2[i] = i*i;
}
// Tell memcpy_s to copy 10 ints (40 bytes), giving
// the size of the a1 array (also 40 bytes).
err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );
if (err)
{
printf("Error executing memcpy_s.\n");
}
else
{
for (i = 0; i < 10; i++)
printf("%d ", a1[i]);
}
printf("\n");
}
0 1 4 9 16 25 36 49 64 81
Equivalente do NET Framework
Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.
Consulte também
Referência
funções strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l