Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Bytes de cópias entre buffers.Estas são as versões do memcpy, wmemcpy com aprimoramentos de segurança, conforme descrito em Recursos 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
Tamanho do buffer de destino.src
Para copiar a partir 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 |
Conteúdo dedest |
|---|---|---|---|---|
NULL |
any |
any |
EINVAL |
não modificado |
any |
any |
NULL |
EINVAL |
desté zerado |
any |
< count |
any |
ERANGE |
desté zerado |
Comentários
memcpy_scopies count bytes from src to dest; wmemcpy_scópias count caracteres extensos (dois bytes).Se a origem e destino sobrepor, o comportamento de memcpy_s é indefinido.Use memmove_s para lidar com regiões sobrepostas.
Essas funções validam seus parâmetros.Se dest ou src é um ponteiro nulo, ou numberOfElements é muito pequeno para o buffer, essas funções chamar o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, essas funções retornam EINVAL e defina errno para EINVAL.
Requisitos
Rotina |
Cabeçalho necessário |
|---|---|
memcpy_s |
<memory.h> ou <string.h> |
wmemcpy_s |
<wchar.h> |
Para obter informações adicionais de 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");
}
Equivalência do .NET Framework
Não aplicável. Para chamar 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
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l