memcpy_s, wmemcpy_s
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