模拟实现memmove

目录

一、功能说明

my_memmove手动实现 memmove 内存移动函数,可处理内存重叠场景:目标地址与源地址重叠时从后往前拷贝避免数据覆盖,无重叠则正向拷贝;主函数分别测试内存重叠拷贝、普通内存拷贝两种场景并输出结果。

二、代码展示

javascript 复制代码
#include <stdio.h>

#include <stddef.h>



//模拟实现memmove

void* my_memmove(void* dest, const void* src, size_t n)

{

	char* start = (char*) dest;

	char* dst = (char*) dest;

	const char* s = (const char*) src;

	if(dst > s && dst < s + n)

	{

		for(size_t i = n; i > 0; i--)

		{

			dst[i-1] = s[i-1];

		}

	}

	else

	{

		for(size_t i = 0; i < n; i++)

		{

			dst[i] = s[i];

		}

	}

	return start;

} 

int main()

{

	char arr[] = "abcdefghij";

	my_memmove(arr+3, arr+1, 5);

	printf("结果为:%s\n", arr);

	char arr2[] = "123456789";

	char buf[20] = {0};

	my_memmove(buf, arr2, 5);

	printf("结果为:%s\n", buf);

	return 0;

}

三、运行效果展示

四、总结

自行实现memmove函数,区分内存是否重叠来选择正向 / 逆向拷贝,防止重叠拷贝时数据被覆盖,最后两组测试验证功能。

相关推荐
aramae8 分钟前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
彧azz1 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
Beyond_System|系统之外2 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
漂流瓶jz4 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
叠层归一研究院5 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia6 小时前
Diffusion Model 的基本原理与模型架构
算法
wabs6667 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin037 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao8 小时前
算法50,分治归并,数组中的逆序对
java·算法
阳明山水9 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构