Compartilhar via


memmove_s, wmemmove_s

Move um buffer para outra.Essas são sistema autônomo versões de memmove, wmemmove com aprimoramentos de segurança conforme descrito em Aprimoramentos 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
    dimensionar do buffer de destino.

  • src
    Objeto de fonte.

  • 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

Sumário de dest

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 de src para dest*.* Se algumas regiões da área de fonte e destino estiverem sobrepostas, memmove_s garante que os bytes de fonte original na região de sobreposição são copiados antes que sejam substituídos.

If dest ou se src é um ponteiro nulo ou se a seqüência de caracteres de destino for 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 for permitida para continuar, essas funções retornam EINVAL e conjunto errno para EINVAL.

Requisitos

Rotina

Cabeçalho necessário

memmove_s

<string.h>

wmemmove_s

<wchar.h>

Para obter informações adicionais 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

Equivalente do NET Framework

sistema::Buffer::BlockCopy

Consulte também

Referência

Manipulação de buffer

_memccpy

memcpy, wmemcpy

strcpy_s wcscpy_s, _mbscpy_s

strcpy wcscpy, _mbscpy

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

funções strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l