0
点赞
收藏
分享

微信扫一扫

memmove(介绍与模拟实现)

伽马星系 2023-03-01 阅读 103

介绍

memmove(介绍与模拟实现)_#define

1.和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。

2.如果源空间和目标空间重叠,就需要使用memmove函数处理

代码演示如下👇👇

memmove(介绍与模拟实现)_#define_02

模拟实现👀

由拷贝时🉑跳跃性的进行变化拷贝,使得拷贝分为两种当(dest<src)的时从前往后拷贝,否则从后往前拷贝

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
void* my_memmove(void* dest, const void* src, size_t num)
{
void* ret = dest;
assert(dest && src);
if (dest < src)
{
//前-->后
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
//后-->前
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return ret;
}
void test1()
{
int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
my_memmove(arr1, arr1 + 2, 20);
}
int main()
{
test1();
return 0;
}

memmove(介绍与模拟实现)_#define_03


举报

相关推荐

0 条评论