阅读:7845回复:21
windows编程中的句柄(handle)是什么意思
句柄是一种指向指针的指针。我们知 道,所谓指针是一种内存地址。应用程序启动后
,组成这 个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地 址, 那么就可以随时用这个地址 访问对象。但是,如果您真的这样认为,那么您就大错特错 了。 我们知道,Windows是一 个以虚拟内存为基础的操作系统。在这种系统环境下,Window s内存 管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动 意味着 它的地址变化 了。如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址, 用来专门 登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不 变的。 Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来 保存。 这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。 这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统 。 句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定) →实际对象 但是,必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来 的那个句柄, 而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成 是一个应用程序的 启动运行, 那么系统给应用程序分配的句柄总是不一样,这和每次电 影院售给我们的门票总是不同 的一个座位 是一样的道理。 |
|
|
1楼#
发布于:2005-03-07 10:42
<P>好啊,真的时解决了我多年来的疑惑啊。谢谢gis先生。</P>
|
|
2楼#
发布于:2005-03-07 22:20
xiexie!xiexie!<img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
|
|
3楼#
发布于:2005-03-18 08:28
么种意义上来说handle不更象一个“ID”么?<img src="images/post/smile/dvbbs/em01.gif" />
|
|
4楼#
发布于:2005-05-11 13:20
<P>真是厉害啊,果然造诣不浅啊,以后还请你多多指教 啊</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em06.gif" />
|
|
5楼#
发布于:2005-05-21 23:36
多谢了,顶一下<img src="images/post/smile/dvbbs/em02.gif" />
|
|
6楼#
发布于:2005-12-06 10:40
句柄就是菜刀把子。菜刀怎么挥舞,握住把子,就握住了菜刀。<img src="images/post/smile/dvbbs/em03.gif" /><img src="images/post/smile/dvbbs/em03.gif" /><img src="images/post/smile/dvbbs/em03.gif" />
|
|
|
7楼#
发布于:2005-12-25 20:35
<P>楼上的说的好</P>
|
|
|
8楼#
发布于:2006-01-19 16:56
<P>楼主说的真好,解决了我的一直来的疑问啊,</P>
|
|
9楼#
发布于:2006-01-27 19:34
还是不太明白
|
|
上一页
下一页