模拟实现memcpy

目录

一、功能说明

my_memcpy手动复刻实现了库函数 memcpy 的基础功能,自定义 my_memcpy 将任意类型源内存的数据逐字节复制至目标内存地址,主函数中分别对整型数组、字符串数组进行内存拷贝测试,把整型数组 arr1 的数据完整复制到 arr2、字符串 str1 内容拷贝至 str2 并打印验证结果,以此验证自定义内存拷贝函数能够适配不同数据类型完成整块内存的无重叠复制。

二、代码展示

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

#include <stddef.h>



//构造my_memcpy函数

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

{

	char* dst = (char*) dest;

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

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

	{

		dst[i] = sour[i];

	}

	return dest;

}



int main()

{

	int arr1[] = {1, 2, 3, 4, 5};

	int arr2[5] = {0};

	//调用函数

	my_memcpy(arr2, arr1, sizeof(arr1));

	//输出结果

	printf("拷贝后 arr2:");

	for(int i = 0; i < 5; i++)

	{

		printf("%d ", arr2[i]);

	}

	char str1[] = "hello world";

	char str2[20] = {0};

	//调用函数

	my_memcpy(str2, str1, sizeof(str1));

	//输出结果

	printf("\n拷贝后 str2:%s\n", str2);

	return 0;

} 

三、运行效果展示

四、总结

该程序实现自定义内存拷贝函数my_memcpy,按字节完成内存复制,并分别拷贝整型数组与字符串验证函数效果。

相关推荐
动词ing7 小时前
【题目练习】算法 组合总和||
算法
wuminyu7 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
longlongzihan8 小时前
链表找环:Floyd 判圈算法(LeetCode 141 & 142 )
c++·算法·leetcode·链表
专业程序开发源8 小时前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计
Logic1018 小时前
C语言/数据结构欧几里得算法题解:长方形切割最大正方形——贪心划分计数
c语言·数据结构·算法·贪心算法·时间复杂度·空间复杂度·欧几里得算法
yi0118 小时前
LeetCode 643. 子数组最大平均数 I|从暴力枚举到滑动窗口
人工智能·笔记·python·算法·leetcode·滑动窗口
极光通讯9 小时前
服务器内存来料检验(IQC)实操:批次追溯、外观判定与上机验证
java·服务器·算法
淡海水9 小时前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
ClickHouseDB9 小时前
ClickHouse 大规模 OpenTelemetry 数据接入架构的可靠性演进
算法
Shaoshing9 小时前
BHU 润石工作室 251019自建赛题解
算法