C语言模拟内存函数分析之mencpy与memmove
目录
- 前言
- 模拟实现简单的内存函数
- 1.memcpy-内存拷贝函数(应该拷贝不重叠的内存)
- 2.memmove-内存拷贝函数(可以拷贝重叠的内存)
- 总结
前言
内存是CPU与外存进行沟通的桥梁。
在冯·诺依曼计算机结构中,存储器是计算机的存储部件,是信息存储的核心,用来存放程序和数据。 存储器分为内存(内存储器、主存储器)和外存(外存储器、辅助存储器)。 CPU能够直接访问的存储器是内存。外存用于帮助主存记忆更多的信息,外存内的信息必须调入内存后,才能被CPU所使用。因此,内存是CPU与外存进行沟通的桥梁。
模拟实现简单的内存函数
1.memcpy-内存拷贝函数(应该拷贝不重叠的内存)
函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
这个函数在遇到 '\0' 的时候并不会停下来。
如果source和destination有任何的重叠,复制的结果都是未定义的。
调试结果
2.memmove-内存拷贝函数(可以拷贝重叠的内存)
和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。 如果源空间和目标空间出现重叠,就得使用memmove函数处理。
调试结果
总结
上述简单模拟实现了两个内存函数的使用,相信大家都学会了。如果上述文章有任何问题 ,欢迎大佬们提出质疑,我会虚心学习和改正,最重要的是能共同进步,共同成长,学习好编程。
到此这篇关于C语言模拟内存函数分析之mencpy与memmove的文章就介绍到这了,更多相关C语言 mencpy内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
C语言详解如何应用模拟字符串和内存函数
目录 1.strlen 求字符串长度 使用案例: 1.计数法 2.不创建临时变量计数器-递归 3.指针-指针的方式 2.长度不受限制的字符串函数 1.strcpy 使用案例: 模拟实现: 2.strcat 使用案例: 模拟实现: 3.strcmp-比较字符串首字母的大小 使用案例: 模拟实现: 3.长度受限制的字符串函数 1.strncpy 使用案例: 2.strncat 使用案例: 3.strncmp 使用案例: 4.strstr-找子串 使用案例: 模拟实现: 5.strtok 用法:
-
C语言内存函数的使用及其模拟实现
目录 前言 memcpy memcmp memmove memset 总结 前言 在C语言中,我们除了会经常用到与字符相关的函数,我们还会使用到与内存相关的库函数.今天我们就来学习几个常见的内存函数吧! memcpy void * memcpy ( void * destination, const void * source, size_t num ); 这是一个内存复制函数,该函数会从source的位置开始向后复制num个字节的数据到destination的内存位置. 这个函数在遇到 '\0
-
C语言模拟内存函数分析之mencpy与memmove
目录 前言 模拟实现简单的内存函数 1.memcpy-内存拷贝函数(应该拷贝不重叠的内存) 2.memmove-内存拷贝函数(可以拷贝重叠的内存) 总结 前言 内存是CPU与外存进行沟通的桥梁. 在冯·诺依曼计算机结构中,存储器是计算机的存储部件,是信息存储的核心,用来存放程序和数据. 存储器分为内存(内存储器.主存储器)和外存(外存储器.辅助存储器). CPU能够直接访问的存储器是内存.外存用于帮助主存记忆更多的信息,外存内的信息必须调入内存后,才能被CPU所使用.因此,内存是CPU与外存进行
-
C语言动态内存管理分析总结
目录 什么是动态内存分配 动态内存函数的介绍 free malloc calloc realloc 动态内存管理中常见的错误 对NULL指针的解引用操作 对动态开辟空间的越界访问 对非动态开辟内存使用free释放 使用free释放一块动态开辟内存的一部分 对同一块动态内存多次释放 动态开辟内存忘记释放(内存泄漏) 一些经典的笔试题 题目1 题目2 题目3 题目4 柔性数组 柔性数组的特点 柔性数组的优势 什么是动态内存分配 我们都知道在C语言中,定义变量的时候,系统就会为这个变量分配内存空间,而
-
C语言动态内存函数详解
目录 动态开辟空间的原因 1.malloc函数 2.free函数 3.calloc函数 4.realloc函数 总结 动态开辟空间的原因 静态开辟空间是固定的,数组在申明的时候必须指定数组的长度,在编译的时候分配内存,但是我们在实际情况中对于内存空间的需求,不仅仅是上述的情况,有时候我们需要的空间只有在运行之后才能知道,所以需要开辟一个动态内存空间,满足更多需求. 1.malloc函数 void* malloc (size_t size); malloc函数是向内存申请一块连续的空间,并返回指向
-
C语言进阶教程之字符串&内存函数
目录 前言: 一.求字符串长度 strlen strlen函数的模拟实现 二.长度不受限制的字符串函数 strcpy strcpy函数的模拟实现 strcat strcat函数的模拟实现 strcmp strcmp函数的模拟实现 三.长度受限制的字符串函数 strncpy strncpy函数的模拟实现 strncat strncat函数的模拟实现 strncmp strncmp函数的模拟实现 四.字符串查找 strstr strstr函数的模拟实现 strtok strtok函数的模拟实现 五.
-
C语言字符串函数,字符函数,内存函数使用及模拟实现
目录 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp 字符串查找函数 strstr strtok strerror 字符函数 字符分类函数 字符转换函数 内存操作函数 memcpy memmove memcmp memset 求字符串长度 strlen 函数功能 字符串长度,求一个字符串中字符的个数(不包含’\0’). 函数参数: size_t strlen( const ch
-
C语言 模拟实现memcpy与memmove函数详解
目录 一.memcpy函数的介绍 1.函数的声明 2.函数功能与注意事项 3.函数的使用 二.模拟实现memcpy函数 1.模拟分析 2.模拟实现 三.memmove函数的介绍 1.函数的声明 2.为什么会有memmove函数 3.函数功能与注意事项 4.函数的使用 四.模拟实现memmove函数 1.模拟分析 2.模拟实现 一.memcpy函数的介绍 1.函数的声明 void * memcpy ( void * destination, const void * source, size_t
-
C语言深入详解四大内存函数的使用
目录 1.memcpy 2.memmove 3.memcmp 4.memset 1.memcpy 与字符串函数 strcpy 类似,也是进行拷贝.但是需要注意的是,strcpy 是针对字符串进行拷贝,而 memcpy 是针对内存进行拷贝. 如何理解呢?strcpy 进行拷贝的时候,只能一个字节一个字节的拷贝,但要实现 整型.浮点型等数据类型拷贝的时候,就不得不用到 memcpy 了. 我们观察 strcpy 的函数声明: char * strcpy ( char * destination, c
-
Go语言共享内存读写实例分析
本文实例分析了Go语言共享内存读写的方法.分享给大家供大家参考.具体分析如下: 前面分析了Go语言指针运算和内嵌C代码的方法,做了一个Go语言共享内存读写的实验. 先大概说下什么是共享内存.我们知道不同进程见的内存是互相独立的,没办法直接互相操作对方内的数据,而共享内存则是靠操作系统提供的内存映射机制,让不同进程的一块地址空间映射到同一个虚拟内存区域上,使不同的进程可以操作到一块共用的内存块.共享内存是效率最高的进程间通讯机制,因为数据不需要在内核和程序之间复制. 共享内存用到的是系统提供的mm
随机推荐
- 关于iOS 11的一些新特性适配实践总结
- iOS CoreTelephony 实现监听通话状态
- 第十三节--对象串行化
- 基于逻辑运算的简单权限系统(实现) JS 版
- Python深入学习之闭包
- js实现点击注册按钮开始读秒倒计时的小例子
- 详解Nodejs 部署到阿里云全过程
- PHP获取文件夹大小函数用法实例
- 用vbs判断一个日期是否在指定的时段内
- 揭秘SQL Server 2014有哪些新特性(2)-固态硬盘 Buffer Pool(缓冲池) 扩展
- easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
- Java的Spring框架中实现发送邮件功能的核心代码示例
- canvas 弹幕效果(实例分享)
- FLASH基础开发习惯第1/2页
- 自定义一个异常类模板的简单实例
- Android TextView使用SpannableString设置复合文本的方法详解
- 实战node静态文件服务器的示例代码
- Java实现XML文件学生通讯录
- vue.js-div滚动条隐藏但有滚动效果的实现方法
- Springboot解决ajax+自定义headers的跨域请求问题