memmove内存拷贝函数

简介: memmove内存拷贝函数

一、memmove内存拷贝函数

1.头文件:string.h

2.函数原型:void *(void* destination , const void* source , size_t num)

3.函数功能:将源地址空间中的num个字节拷贝到目标地址空间中

4.参数分析:

destination是目标地址空间

source是源地址空间

num是需要拷贝的字节数

5.实例代码:

char str1[] = "123456789";
char str2[] = "abcdefg";
memmove(str1 + 4, str2, 5);
printf("%s\n", str1);

int nums1[9] = { 1,2,3,4,5,6,7,8,9 };
int nums2[6] = { 10,11,12,13,14,15 };
memmove(nums1, nums2, sizeof(int) * 6);
for (int i = 0; i < 9; i++)
{
  printf("%d ", nums1[i]);
}

二、memmove与memcpy的区别

memcpy函数详解见:《memcpy内存拷贝函数》

最大的区别是:memmove函数可以进行内存重叠拷贝,而memcpy不可以

 

三、模拟实现memmove函数

void* my_memcpy(void* destination, const void* source, size_t num)
{
  if (destination == NULL || source == NULL)
  {
    return NULL;
  }
  if (source < destination)//从后向前拷贝
  {
    for (int i = num - 1; i >= 0; i--)
    {
      *((char*)destination + i) = *((char*)source + i);
    }
  }
  else//从前向后拷贝
  {
    for (int i = 0; i < num; i++)
    {
      *(char*)destination = *(char*)source;
      ((char*)destination)++;
      ((char*)source)++;
    }
  }
}
————————————————
版权声明:本文为CSDN博主「南林yan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2301_76197086/article/details/133876321


目录
相关文章
|
23天前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
31 3
|
15天前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
29天前
|
存储 程序员 编译器
C语言——动态内存管理与内存操作函数
C语言——动态内存管理与内存操作函数
|
30天前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
113 1
|
1月前
|
程序员 C语言
C语言内存函数精讲
C语言内存函数精讲
|
10天前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
13 0
|
5月前
|
C语言
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
62 0
|
24天前
|
C语言 C++
c语言回顾-内存操作函数
c语言回顾-内存操作函数
38 0
|
26天前
|
存储 C语言 C++
来不及哀悼了,接下来上场的是C语言内存函数memcpy,memmove,memset,memcmp
本文详细介绍了C语言中的四个内存操作函数:memcpy用于无重叠复制,memmove处理重叠内存,memset用于填充特定值,memcmp用于内存区域比较。通过实例展示了它们的用法和注意事项。
60 0
|
26天前
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
57 0