memmove_s, wmemmove_s
Move um buffer para outro.Estas são as versões do memmove, wmemmove com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.
errno_t memmove_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemmove_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Parâmetros
dest
Objeto de destino.numberOfElements
Tamanho do buffer de destino.src
Objeto de origem.count
Número de bytes (memmove_s) ou caracteres (wmemmove_s) para copiar.
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 |
não modificado |
any |
< count |
any |
ERANGE |
não modificado |
Comentários
Cópias count bytes de caracteres do src para dest*.* Se algumas regiões da área de origem e o destino se sobrepõem, memmove_s garante que os bytes de código-fonte original na região de sobreposição são copiados antes de serem sobrescritas.
Se dest ou se src é um ponteiro nulo ou se a seqüência de caracteres de destino é muito pequena, essas funções invocar um 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 |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Exemplo
// crt_memmove_s.c
//
// The program demonstrates the
// memmove_s function which works as expected
// for moving overlapping regions.
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "0123456789";
printf("Before: %s\n", str);
// Move six bytes from the start of the string
// to a new position shifted by one byte. To protect against
// buffer overrun, the secure version of memmove requires the
// the length of the destination string to be specified.
memmove_s((str + 1), strnlen(str + 1, 10), str, 6);
printf_s(" After: %s\n", str);
}
Saída
Before: 0123456789
After: 0012345789
Equivalência do .NET Framework
Consulte também
Referência
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l