zoukankan      html  css  js  c++  java
  • winAPI 中 的 GlobalLock GlobalUnlock 的作用

         在项目中遇到GlobalLock  GlobalUnlock 这两个操作内存的函数。

         百度百科解释为:锁定内存中指定的内存块,并返回一个地址值,令其指向内存块的起始处。除非用 GlobalUnlock 函数将内存块解锁,否则地址会一直保持有效。msdn的说明:Locks a global memory object and returns a pointer to the first byte of the object's memory block.  讲的都比较简单。

          程序员看到的都是虚拟地址,操作系统将虚拟地址转化为物理地址,操作系统负责维护这个映射,当程序被挂起再装入内存时,就不一定会装入到原来的内存空间中,这时操作系统就要改变这个映射,当发生缺页中断时,也会改变映射,这些内存重定位对程序员都是透明的。

          跨进程空间访问内存,必须用GlobalLock将内存锁住,不许重定位,否则有可能发生错误。例如,进程与内核程序的地址空间是不同的,当进程要访问内核的某块内存,系统映射该进程的某逻辑地址到这块内存的物理地址,由于这块内存不属于该进程,当内核的这块内存被重定位后,系统不会更新进程的地址映射,导致错误,因此需要将内存锁住,不许移动,操作完成后再用GloballUnlock解锁。

  • 相关阅读:
    leetcode刷题29
    leetcode刷题28
    leetcode刷题27
    leetcode刷题23
    leetcode刷题22
    leetcode刷题21
    leetcode刷题20
    Unity中通过DoTween实现转盘效果
    U3D工作注意事项,不要再犯!
    Unity中String字符串的优化
  • 原文地址:https://www.cnblogs.com/panyihua/p/3985239.html
Copyright © 2011-2022 走看看