Поделиться через


memmove, wmemmove

Перемещает один буфер в другой. Существуют более безопасные версии этих функций; см. раздел memmove_s, wmemmove_s.

void *memmove(
   void *dest,
   const void *src,
   size_t count 
);
wchar_t *wmemmove(
   wchar_t *dest,
   const wchar_t *src,
   size_t count
);

Параметры

  • dest
    Объект назначения.

  • src
    Объект-источник.

  • count
    Число байтов (memmove) или символов (wmemmove), которые нужно скопировать.

Возвращаемое значение

Значение параметра dest*.*

Заметки

Копирует count байт (memmove) или символов (wmemmove) из src в dest*.* Если некоторые части исходной области и области назначения перекрываются, то обе функции гарантируют, что байты первоисточника в перекрывающейся области копируются перед перезаписью.

Примечание по безопасности: Убедитесь, что буфер места назначения равен или превосходит буфер источника. Дополнительные сведения см. в разделе Как избежать переполнения буфера.

Функции memmove и wmemmove являются нерекомендуемыми, только если перед включением заголовочного файла, содержащего эти функции, определена константа _CRT_SECURE_DEPRECATE_MEMORY для того, чтобы показать, что функции нерекомендуемые, как в примере ниже:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>
or
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Требования

Подпрограмма

Обязательный заголовок

memmove

<string.h>

wmemmove

<wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

// crt_memcpy.c
// Illustrate overlapping copy: memmove
// always handles it correctly; memcpy may handle
// it correctly.
//

#include <memory.h>
#include <string.h>
#include <stdio.h>

char str1[7] = "aabbcc";

int main( void )
{
   printf( "The string: %s\n", str1 );
   memcpy( str1 + 2, str1, 4 );
   printf( "New string: %s\n", str1 );

   strcpy_s( str1, sizeof(str1), "aabbcc" );   // reset string

   printf( "The string: %s\n", str1 );
   memmove( str1 + 2, str1, 4 );
   printf( "New string: %s\n", str1 );
}
  

Эквивалент в .NET Framework

System::Buffer::BlockCopy

См. также

Ссылки

Манипуляция буфером

_memccpy

memcpy, wmemcpy

strcpy, wcscpy, _mbscpy

strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l