码迷,mamicode.com
首页 > Windows程序 > 详细

winAPI 中 的 GlobalLock GlobalUnlock 的作用

时间:2014-09-22 02:21:51      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:style   sp   on   c   size   r   bs   程序   不同的   

     在项目中遇到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解锁。

 

winAPI 中 的 GlobalLock GlobalUnlock 的作用

标签:style   sp   on   c   size   r   bs   程序   不同的   

原文地址:http://www.cnblogs.com/panyihua/p/3985239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!