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.
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