glibc memcpy内部机制学习记录

news2024/12/25 22:18:22

判断需要拷贝的字节数是否大于临界值(16或8)。如果小于,直接按照one byte by one byte来拷贝。如果大于:

1、先进行内存对齐。假设要拷贝的目的地址如下所示

其中start为拷贝目的地的起始地址 ,end为拷贝目的地的结束地址,align border为内存中的对齐边界。

BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);  //传的参数为(-dstp) % OPSIZ),就是对齐需要拷贝的字节数

2、此时的len就为对齐之后的剩余大小了,之后的处理方式直接按照虚拟内存页的大小来加快拷贝效率。

 /* Copy whole pages from SRCP to DSTP by virtual address manipulation,as much as possible.  */
    PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);

3、如果后面还有剩余部分,还可以采用一个字一个字拷贝:

 WORD_COPY_FWD (dstp, srcp, len, len);

 /* Fall out and copy the tail.  */

4、剩余的不能采用word copy的尾部使用one byte by one byte进行拷贝。

参考:

(170条消息) glibc--memcpy源码分析_astrotycoon的博客-CSDN博客

(170条消息) glibc memcpy() 源码浅谈_杨博东的博客的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业的内部文档太杂乱,有什么好用的文档管理软件?

企业内部文档的管理,是一个老生常谈的问题。 有些企业的文档管理比较混乱,很难做好企业内部的信息管控。 我们可以先从以下几个方面入手: 企业内部文档杂乱分散,集中式的管理;信息更新不及时、错误频繁,通过…

大数据NiFi(十六):处理器Connection连接

文章目录 处理器Connection连接 一、查看队列中的FlowFile 二、查看FlowFile自定义属性值

【数据结构初阶】第一节.初识时间和空间复杂度

文章目录 前言 一、认识数据结构 二、时间复杂度 2.1 时间复杂度的概念 2.2 计算时间复杂度 2.2.1 大O的渐进表示法 2.3 常见时间复杂度计算举例 三、空间复杂度 3.1 空间复杂度的概念 3.2 计算空间复杂度 3.3 常见空间复杂度计算举例 四、常见复杂度的对比&#xff1…

CVE-2022-26937 Windows NFS 栈溢出漏洞分析

简介 NFS全称Network File System,即网络文件系统,用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程访问保存在存储设备上的数据。 CVE-2022-26937是微软5月份修复的Windows NFS中一个对NLM响应处理不当的栈溢出漏洞&#xff…

OAuth2(1)

目录 一、什么是OAuth2.0 二、OAuth2中的角色 三、认证流程 四、生活中的OAuth2思维 五、令牌的特点 六、OAuth2授权方式 1.授权码 2.隐藏方式 3.密码方式 4.凭证方式 一、什么是OAuth2.0 OAuth2.0是目前使用非常广泛的授权机制,用户授权第三方应用…

红宝书学习

第一章 认识js js的组成部分有哪些? ①ecma 核心语法 api ②dom 提供与网页内容交互的方法和接口 ③bom 浏览器对象模型,提供了和浏览器交互的接口 use strict 是什么? use strict 是一种 ECMAscript5 添加的(严格模式&#xff…

玩了半年NFT,一心进军Web3的Prada到底要怎么玩?

图片来源:无界AI绘画工具生成2022年1月,奢侈品品牌Prada与阿迪达斯玩了一把“联合营销”,玩法是这样的:首先,两个品牌邀请粉丝上传个人照片,然后,品牌抽取3000名粉丝的作品,交由数字…

【Rust】12. 自动化测试

12.1 编写测试 12.1.1 测试函数 测试函数:在一个函数前加上一行 #[test] 注解将普通函数变成测试函数 12.1.2 assert! 宏 12.1.3 assert_eq! 与 assert_ne! assert_eq!(left, right) 与 assert_eq!(left, right) 在失败时会返回 left 与 right 两个值&#xff0c…

Python学习-----起步1

目录 Python的下载(解释器) IDLE进入Python解释器 交互模式 脚本模式 注释 单行注释: 多行注释 Python的下载(解释器) 百度网盘链接: https://pan.baidu.com/s/1WEmOAGGHtHc1fxZzNGKu6A?pwd5356 …

web3小白入门:区块链的了解

记录web3学习的过程,从小白开始所有的web3相关的学习内容都会更新在github,github地址这篇文章主要说明区块链的一些概念为什么要了解区块链?Web3 是以区块链技术为核心,构建新一代的去中心化互联网组件,再基于它们来构建我们想要提供的服务、…

HTTP状态码301和302区别

Http 状态码 301 和 302 定义: 1、什么时候使用301? 你将永久更改网页的 URL时。你将永久迁移到新域名时。当你从 HTTP 切换到 HTTPS 时。你希望修复非 www / www 重复内容问题时。永久合并两个或多个页面或网站时。你将永久更改网站的 URL 结构时。 …

万字详解递归与递推

秋名山码民的主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🙏作者水平有限,如发现错误,还请私信或者评论区留言! 👍目录前言递归斐波那契数列问题的递归爬楼梯问题力扣递归实现…

js 点击图片实现查看大图

js 点击图片实现查看大图 点击图片放大缩小&#xff08;遮罩&#xff09; 截图&#xff1a;点击放大&#xff0c;并显示ico放大镜 代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>点击图片放大缩…

buu 浪里淘沙 1

题目描述&#xff1a; 题目分析&#xff1a; 看了这一大串字符串&#xff0c;发现里面都是由16个字母组成&#xff0c;即 “tonight success notice we example crypto should back space sublim found system morning user the enter ”&#xff0c;并且这16个字母在第一行中…

【Kotlin】DSL 领域特定语言 ① ( apply 标准库函数分析 | 普通匿名函数 | 扩展匿名函数 | 泛型扩展匿名函数 )

文章目录一、apply 标准库函数分析1、apply 函数展示2、apply 函数原型分析函数原型参数和返回值分析3、匿名函数类型分析4、扩展函数回顾5、泛型扩展函数函数类型6、泛型扩展匿名函数7、apply 标准库函数参数分析泛型扩展函数匿名函数 与 普通匿名函数 对比apply 函数参数不是…

登高望远,一文解答 2023 年你最关心的前端热点问题

动手点关注干货不迷路本文预计阅读 25 min&#xff0c;建议先收藏后观看~一、刀光剑影的 2022时光荏苒&#xff0c;这绝不平淡的 2022 年已经走上历史的黄页&#xff0c;新的一年也逐渐看不到故人回首的光影。感谢你对前端技术领域持续关注&#xff0c;我们一直在这里等你。① …

致敬2202年,这些优秀的裁缝们

文 | 鹰钩鼻涕虫2202年过去了&#xff0c;不知道小伙伴们是否和我一样&#xff0c;绝大多数时间处于迷茫之中&#xff0c;除去其他因素不谈&#xff0c;在最后一个月到来之前&#xff0c;NLP 学界的表现似乎不如前几年那样“精彩”&#xff0c;甚至可说是“寡淡”&#xff0c;翻…

spring事务执行流程分析_5(注解形式 advisor等前置对象的生成)

调用beanFactory处理器 依旧进入刷新refresh方法AbstractApplicationContext#refresh -> 在上一篇文章spring事务执行流程分析_4(注解形式 EnableTransactionManagement的作用) 解析EnableTransactionManagement注解就是在此方法进行的,也就是在会注册 名字&#xff1a;i…

简单模拟vue实现数据劫持-视图更新双向绑定-2

接上&#xff0c; new一个实例对象&#xff0c;vc&#xff0c;构造函数动态绑定一个空对象&#xff0c;并在构造函数上绑定静态方法 $on进行事件的注册&#xff0c;$emit抛出执行事件 function observe() {// 利用策略模式-可以快速根据特定的事件&#xff0c;执行多个函数th…

最全总结 | 聊聊 Selenium 隐藏浏览器指纹特征的几种方式!

大家好&#xff0c;我是安果&#xff01;我们使用 Selenium 对网页进行爬虫时&#xff0c;如果不做任何处理直接进行爬取&#xff0c;会导致很多特征是暴露的对一些做了反爬的网站&#xff0c;做了特征检测&#xff0c;用来阻止一些恶意爬虫本篇文章将介绍几种常用的隐藏浏览器…