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 等效项

系统:: 缓冲区:: BlockCopy

请参见

参考

缓冲区处理

_memccpy

memcpy, wmemcpy

strcpy, wcscpy, _mbscpy

strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l