整天说的句柄到底是个啥子东西

来源:互联网 发布:保险软件哪个好 编辑:程序博客网 时间:2024/05/05 18:58

句柄是一个指向指针的指针,我们(学过C语言的)(应该都学过)知道,指针中保存的是内存地址,那么一个指向指针的指针,他保存的就是另一个指针的地址,我们可以通过一个指针来找到另一个指针,然后再通过另一个指针访问到具体的数据,

   那么为什么要这么麻烦呢?(单就一个指针就够烦恼了谄笑

  我们知道,当运行一个占用大量内存的程序的时候,系统内存很快就会被填满,这时WINDOWS就会自动将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存.打个比方,电脑的剩余物理内存只有1G,我们同时运行游戏和QQ,游戏占用1G内存,而QQ占用100M,假如没有虚拟内存,那么QQ就不能运行,因为系统无法给QQ分配合适大小的内存,但是有了虚拟内存,那么就可以将游戏的一些不常用的数据转移出来,存放到虚拟内存中,比如说保存到硬盘上的一个叫pagefile.sys的文件中,同时释放掉这些被转移的数据,这样就有了足够的内存运行QQ,而当游戏运行到需要加载那些被转移的数据时,可以释放掉一些不常用的数据,将其保存到硬盘文件pagefile.sys中,然后再读取pagefile.sys文件中关于游戏的数据,这样循环移动数据的过程就是微软的虚拟内存技术。

  我们看到,为了最大限度的使用物理内存,Windows需在物理内存和虚拟内存之间来回移动数据,以此来满足各种应用程序的内存需要.数据被移动意味着它的地址发生了变化.假如我们仍然按照先前的地址来访问它,是会出错的.那么我们如何才能得到数据正确的地址呢?

为了解决这个问题,WINDOWS操作系统专门腾出一块内存空间用来保存数据在内存中的地址变化,WINDOWS操作系统每次移动数据后,都要把数据新的地址告知这个内存空间来保存,而记录地址变化的这块内存空间它的地址是保持不变的.

   我们把这个不变的地址叫做句柄,我们就可以通过该句柄找到数据的最新地址,然后访问该数据.

   但是,必须注意的是程序每次重新启动,WINGDOWS操作系统所分配的句柄都是不一样的,这就好像每次抽奖都抽到不同的号码一样,当然也有可能抽到同一个号码,只不过几率小了点罢了.

原创粉丝点击