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区别相关推荐

  1. 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标

    回顾 在<监控系统简介:使用 Prometheus 与 Grafana>一文中,我们了解了什么是监控系统,Prometheus 这一监控工具及它提供的数据类型.PromQL 以及 Graf ...

  2. MyMac M1/Mac/Win Config配置记录---kalrry

    MyMac M1/Mac/Win Config配置记录---kalrry 前言 一.MyMac常用软件列表: 二.✅ Homebrew 三.✅ Xcode Comand Line Tools() 四. ...

  3. 使用Win API创建顶级菜单(不使用资源文件)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 最近使用Code::Blocks进行业余学习(VS200x对我的机子来说太庞大了).我就编编些Win API程序.Co ...

  4. C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie

    网上找到的可以完整获取Cookie的方法,转载一下希望能帮助更多人. 亲测可用 在Winform中使用WebBrowser控件获取网站的Cookie有时候是不完整的,默认调用Document.Cook ...

  5. Servlet API中forward()与redirect()的区别?

    Servlet API中forward()与redirect()的区别? a.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这 ...

  6. Laravel - route 的api.php 与 web.php 的区别

    1.应用场景 了解Laravel中路由api.php 与 web.php的区别以及各自的应用场景. 2.学习/操作 1.介绍 https://xueyuanjun.com/post/21462  // ...

  7. FatFs 常用 API 详细记录

    文章目录 FatFs 常用 API 详细记录 f_mount - 注册/注销卷的工作区域 函数原型 参数 返回值 描述 使用条件 f_open - 打开/创建文件 函数原型 参数 返回值 描述 使用条 ...

  8. SIEMENS PLC Web API 学习记录

    SIEMENS PLC Web API 学习记录 为顺应时代发展,西门子为 S7-200SMART/1200/1500 PLC 添加IT通讯所需要的 Web API.(由于S7-200 SMART 新 ...

  9. 高德地图 api 使用记录

    高德地图api使用记录/总结 创建地图 初始化 点击地图获取坐标及位置名称 搜索关键字自动补全并搜索 根据坐标进行搜索 根据关键字进行搜索 点击添加按钮更新数组,同时更新页面 点击显示按钮 地图显示对 ...

最新文章

  1. mysql分库分区分表怎么做_mysql 分区、分表、分库分表。
  2. haproxy实现discuz论坛的动静分离和负载均衡
  3. python 多进程 多核_go/node/python 多进程与多核cpu
  4. 学习Java能够从事哪些工作?
  5. 【数据结构与算法】链式栈的Java实现
  6. SCOM 2012 SP1---安装SCOM 2012 SP1
  7. 在 Queue 中 poll()和 remove()有什么区别?
  8. “有钱人大多不快乐”这种观点,只是普通人的心理安慰吗?
  9. left join条件放在on和where的区别
  10. 解决tomcat在idea控制台乱码
  11. 《tcpip详解卷一》:150行代码拉开协议栈实现的篇章
  12. MongoDB安装和批量写入
  13. Debian9.5系统DNS服务器BIND软件配置说明
  14. 爬虫入门(1)——requests(1)
  15. 关于GCC属性中的弱符号(weak symbol)
  16. 【LEDE】x86软路由之路-12-浅谈复杂网络环境中的AP优化
  17. 香港影评会选出电影史上十大华语片
  18. validation插件
  19. python编写的函数调用说法正确的是_python逻辑题(以下10道选择题有唯一答案,请编写自定义函数judge遍历答案列表并汇报正确答案)...
  20. transform三大属性之scale(缩放)

热门文章

  1. 数论 --- 质因数
  2. SSL 2295——暗黑破坏神
  3. Mac电脑开启root权限教程
  4. js 选项卡 实现方法
  5. To forever Tracy McGrady
  6. 想建一个服务器,使用云服务器好些还是个人电脑好些?
  7. Java文字转语音,实测有效
  8. 对于RIP协议的基本使用
  9. Snex9x-gtk:一个超任的GTK+模拟器
  10. Android 启用USB调试