当前位置: 首页 > article >正文

【重生之我要苦学C语言】C语言内存函数

C语言内存函数

memcpy

在这里插入图片描述

  • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置
  • 这个函数在遇到’\0’的时候并不会停下来。
  • 如果source和destination有任何的重叠,复制的结果都是未定义的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
只关注要拷贝的数据在哪里,要存放到哪里,拷贝几个字节
至于内存中存放什么数据,什么类型数据,不重要
strcpy,strncpy只适用于字符串
memcpy函数不保证重叠内存的拷贝,通常使用memcpy函数拷贝不重叠内存的数据,那么重叠的情况怎么处理?——memmove

模拟实现memcpy

void* my_memcpy(void* dest,const void* src,size_t num) {
	void* ret = dest;
	assert(dest && src);
	while (num--) {
		*(char*)dest = *(char*)src;
		dest = (char*)dest + 1;
		src = (char*)src + 1;
	}
	return ret;
}

上述实现的函数无法实现内存重叠

在这里插入图片描述

库函数能实现,可以支持重叠

在这里插入图片描述

memmove

在这里插入图片描述
在这里插入图片描述

memmove模拟实现

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;
}

memset

在这里插入图片描述
memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容

在这里插入图片描述

在这里插入图片描述

memcmp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/401137.html

相关文章:

  • 一文速学---红黑树
  • Ajax的相关内容
  • 十二:HTTP错误响应码:理解与应对
  • VMware 中 虚拟机【Linux系统】固定 ip 访问
  • 2024山西省网络建设运维第十八届职业院校技能大赛解析答案(3. ansible 服务)
  • 基于Java的旅游类小程序开发与优化
  • 面向服务的软件工程——面向过程的系统分析:流程挖掘(week10)
  • ssh隧道代理访问内网应用
  • K8S containerd拉取harbor镜像
  • 【WPF】Prism学习(七)
  • 《Camera-free Image to PanoramaGeneration with Diffusion Model》论文解析——CamFreeDiff
  • 图像编辑一些概念:Image Reconstruction与Image Re-generation
  • chatgpt训练需要什么样的gpu硬件
  • 得物彩虹桥架构演进之路-负载均衡篇
  • 6 设计模式原则之单一职责原则
  • 深入浅出 Spring Cloud 微服务:架构、核心组件与应用实践
  • NLP论文速读(EMNLP 2024)|动态奖励与提示优化来帮助语言模型的进行自我对齐
  • Java 设计模式 详解
  • AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!
  • RabbitMQ实战启程:从配置到故障排查的实战处理(下)
  • 高级java每日一道面试题-2024年11月14日-基本篇-static都有哪些用法?
  • Linux之vim全选,全部复制,全部删除
  • 【H2O2|全栈】JS进阶知识(五)ES6(1)
  • 记录下,用油猴Tampermonkey监听所有请求,绕过seesion
  • Jmeter进阶篇(26)杀掉Tomcat的几种方法
  • 国产三维CAD 2025新动向:推进MBD模式,联通企业设计-制造数据