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解锁。
winAPI 中 的 GlobalLock GlobalUnlock 的作用的更多相关文章
- linux中test与[ ]指令的作用
linux中test与[ ]指令的作用: 在Linux中,test和[ ]功能是一样的,类似于c语言中的( ).不过Linux的test和[ ]是指令.在和if或者while联用时要用空格分开.
- Flex中 Array 的IndexOf 的作用
Flex中 Array 的IndexOf 的作用 1.说明 indexOf用于在索引中从小到大查找,假设查得到就返回索引值,查不到就返回-1: 2.实例 (1)设计源代码 <?xml ve ...
- java中instanceof和getClass()的作用
初学者难免有点混淆java中instanceof和getClass()的作用, 下面就来一一讲解. 父类A: class A { } 子类B: class B extends A { } 构造对象 ...
- python中__init__.py文件的作用
问题 在执行models.py时,报ImportError:No module named transwarp.db的错误,但明明transwarp下就有db.py文件,路径也没有错误.真是想不通.后 ...
- 母版页中ContentPlaceHolder 控件的作用
文章转自 http://wenku.baidu.com/link?url=7sLN0ihgZQ1XfX47b_y8qbpIVjS5T75Q1xvaoyIQ6OiKIgvzyVyRccnU9e9fqo ...
- inner join、left join、right join中where和and的作用
inner join.left join.right join中where和and的作用 .内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接 (左边的 ...
- 转:css中overflow:hidden 不起作用了吗?
css中overflow:hidden 不起作用了吗? 有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗?其实看似 ...
- Python包中 __init__.py文件的作用
原创连接 https://www.cnblogs.com/AlwinXu/p/5598543.html Python包中 __init__.py文件的作用 在创建python包的过程中,IDE都会在包 ...
- Linux中的Wheel组的作用
原文:http://www.360doc.com/content/11/0505/10/4644186_114496525.shtml Linux中的Wheel组的作用(用自己的话翻译的) (原文) ...
随机推荐
- Autofac 及 Autofac.WebApi 与MVC版本兼容问题
环境:vs2013 下载 Autofac 时,会自动把 Microsoft.AspNet.Mvc 更新到 5.2.3.原来是 5.0.0.0 再使用 Autofac.WebApi , 出现以下问题: ...
- CentOS 安装rz和sz命令
虚机装了CentOS7.2最小版本, 结果上去后发现rz命令不能用 yum install lrzsz 安装完成:
- Endless Sky源码学习笔记-3
文本解析: 将txt存入DataFile,DataFile包含DataNode,每个DataNode是txt中的一行,每个DataNode包含若干token(std::vector<string ...
- 基于sentinel 的redis集群环境搭建
环境信息,三台机器,一台master,两台slave,每台机器上启动一个sentinel master 192.168.1.106 slave1 192.168.1.102 slave2 192.16 ...
- 后台dom拼接xml,动态显示统计图
这个东西让我好生头疼,贴代码吧 // 两秒后模拟点击 setTimeout(function() { // IE if(document.all) { document.getElementById( ...
- 从H264码流中获取视频宽高 (SPS帧) 升级篇
之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...
- 第二章 centos安装maven
一.官网下载 apache-maven-3.3.9-bin.tar.gz 注意:需要jdk1.7及以上 二.上传 scp apache-maven-3.3.9-bin.tar.gz root@10.2 ...
- 附加数据库失败,sql2008,断电数据库日志受损
附加数据库失败,提示:无法在数据库 'DBNAME' (数据库 ID 为 7)的页 (1:210288) 上重做事务 ID (0:0) 的日志记录或者在重做数据库 'DBNAME' 的日志中记录的操作 ...
- iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了
苹果系统升级后好多应用都发了新版本来适配,今天就来分享一下我的适配历程. 首先是出现的问题: 1.push一个控制器,返回按钮和标题神奇的消失了,打开三维视图(比较坑的是有的版本老到打不开三维视图 ) ...
- as3自定义事件
package EventPackage { import flash.events.Event; /** * * @author tqr <br /> * 创建时间:2015-2-6 下 ...