Win API使用记录--RtlCopyMemory与RtlMoveMemory区别
1、RtlCopyMemory与RtlMoveMemory
这两个函数是内核函数api,对应Win32 API是CopyMemory和MoveMemory。都能实现内存块的复制,两者的区别在于CopyMemory是非重叠内存区域的复制,MoveMemory可以不考虑是否重叠,都可以安全复制。
CopyMemory实现如下:
void *memmcpy(void *dest , const void *src , size_t count)
{ assert( (dest != NULL) && (src != NULL)); //安全检查 assert( count > 0 ); char *psrc = (char *) src; char *pdest = (char *) dest; while( count-- ) *pdest++ = *psrc++; return dest;
}
MoveMemory具体实现:
void *memmove(void *dest , const void *src , size_t count)
{ assert( (dest != NULL) && (src != NULL)); //安全检查 assert( count > 0 ); char *psrc = (char *) src; char *pdest = (char *) dest; //检查是否有重叠问题 if( pdest < psrc ) { //正向拷贝 while( count-- ) *pdest++ = *psrc++; } else if( psrc < pdest ) { //反向拷贝 psrc = psrc + count - 1; pdest = pdest + count - 1; while( count-- ) *pdest-- = *psrc--; } return dest;
}
MoveMemory实现中有判断目的地址和源地址值,如果目的地址值小于源地址值,正向拷贝,如果目的地址值大于源地址值,反向拷贝
Win API使用记录--RtlCopyMemory与RtlMoveMemory区别相关推荐
- 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标
回顾 在<监控系统简介:使用 Prometheus 与 Grafana>一文中,我们了解了什么是监控系统,Prometheus 这一监控工具及它提供的数据类型.PromQL 以及 Graf ...
- MyMac M1/Mac/Win Config配置记录---kalrry
MyMac M1/Mac/Win Config配置记录---kalrry 前言 一.MyMac常用软件列表: 二.✅ Homebrew 三.✅ Xcode Comand Line Tools() 四. ...
- 使用Win API创建顶级菜单(不使用资源文件)
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近使用Code::Blocks进行业余学习(VS200x对我的机子来说太庞大了).我就编编些Win API程序.Co ...
- C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie
网上找到的可以完整获取Cookie的方法,转载一下希望能帮助更多人. 亲测可用 在Winform中使用WebBrowser控件获取网站的Cookie有时候是不完整的,默认调用Document.Cook ...
- Servlet API中forward()与redirect()的区别?
Servlet API中forward()与redirect()的区别? a.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这 ...
- Laravel - route 的api.php 与 web.php 的区别
1.应用场景 了解Laravel中路由api.php 与 web.php的区别以及各自的应用场景. 2.学习/操作 1.介绍 https://xueyuanjun.com/post/21462 // ...
- FatFs 常用 API 详细记录
文章目录 FatFs 常用 API 详细记录 f_mount - 注册/注销卷的工作区域 函数原型 参数 返回值 描述 使用条件 f_open - 打开/创建文件 函数原型 参数 返回值 描述 使用条 ...
- SIEMENS PLC Web API 学习记录
SIEMENS PLC Web API 学习记录 为顺应时代发展,西门子为 S7-200SMART/1200/1500 PLC 添加IT通讯所需要的 Web API.(由于S7-200 SMART 新 ...
- 高德地图 api 使用记录
高德地图api使用记录/总结 创建地图 初始化 点击地图获取坐标及位置名称 搜索关键字自动补全并搜索 根据坐标进行搜索 根据关键字进行搜索 点击添加按钮更新数组,同时更新页面 点击显示按钮 地图显示对 ...
最新文章
- mysql分库分区分表怎么做_mysql 分区、分表、分库分表。
- haproxy实现discuz论坛的动静分离和负载均衡
- python 多进程 多核_go/node/python 多进程与多核cpu
- 学习Java能够从事哪些工作?
- 【数据结构与算法】链式栈的Java实现
- SCOM 2012 SP1---安装SCOM 2012 SP1
- 在 Queue 中 poll()和 remove()有什么区别?
- “有钱人大多不快乐”这种观点,只是普通人的心理安慰吗?
- left join条件放在on和where的区别
- 解决tomcat在idea控制台乱码
- 《tcpip详解卷一》:150行代码拉开协议栈实现的篇章
- MongoDB安装和批量写入
- Debian9.5系统DNS服务器BIND软件配置说明
- 爬虫入门(1)——requests(1)
- 关于GCC属性中的弱符号(weak symbol)
- 【LEDE】x86软路由之路-12-浅谈复杂网络环境中的AP优化
- 香港影评会选出电影史上十大华语片
- validation插件
- python编写的函数调用说法正确的是_python逻辑题(以下10道选择题有唯一答案,请编写自定义函数judge遍历答案列表并汇报正确答案)...
- transform三大属性之scale(缩放)