计算机中的“句柄”是什么意思?

转载 2011年10月13日 16:42:31

转自:http://www.cnitblog.com/cockerel/archive/2010/06/08/13224.html

所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 

句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 

从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 

如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢? 

为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。 


句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象 


本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。 


但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。

计算机中的堆和栈【百度百科】

堆和栈的区别一、预备知识—程序的内存分配  一个由C/C++编译的程序占用的内存分为以下几个部分  1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于...
  • binbin1129
  • binbin1129
  • 2010-07-25 17:50:00
  • 2805

计算机中的服务是什么意思?

操作系统中的服务是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。通过网络提供服务时,服务可以在Active Directory(活动目录)中发布,从而促进了以服务...
  • updownlife
  • updownlife
  • 2012-03-11 16:31:43
  • 7953

在计算机中NIC是什么意思?

在计算机中NIC是什么意思? (2009-10-28 11:45) 分类: 网络技术 网卡简称NIC,也叫网络适配器.网卡是局域网中最基本的部件之一,它是连接计算机与网络的硬件...
  • jfkidear
  • jfkidear
  • 2011-11-01 17:00:24
  • 6265

计算机中的位,字节,字长的含义是什么?

最佳答案位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是 “0”或是“1”在CPU中都是 一“位”。 字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数...
  • chlxz
  • chlxz
  • 2007-12-08 10:29:00
  • 1645

JAVA中的术语:句柄是啥意思

句柄的本质:一个唯一的整数,作为对象的身份id,区分不同的对象,和同类中的不同实例。程序可以通过句柄访问对象的部分信息。句柄不代表对象的内存地址。 句柄和指针的区别:程序不能通过句柄直接阅读文件中的...
  • u012536353
  • u012536353
  • 2015-12-29 18:03:46
  • 3422

bmp文件格式分析分析

  • 2009年04月28日 11:23
  • 138KB
  • 下载

“句柄”是什么意思

转自:http://www.cnitblog.com/cockerel/archive/2006/07/04/13224.aspx 计算机中的“句柄”是什么意思? 所谓句柄实际...
  • xth6314
  • xth6314
  • 2014-02-09 12:21:20
  • 338

[C++]什么是句柄?为什么会有句柄?

从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是”Handle”,本义就是”柄”,只是在计算机科学中,被特别地翻译成”句柄”,其实还是个”柄”。从一个小东西拎起一大堆东西,这难...
  • cn_wk
  • cn_wk
  • 2017-02-27 20:54:48
  • 1215

C++中的句柄

C++中的句柄
  • SadOnMyOwn
  • SadOnMyOwn
  • 2016-07-24 09:04:18
  • 1269

JAVA是什么意思

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, Jav...
  • xiaoxiao520c
  • xiaoxiao520c
  • 2017-08-06 13:58:03
  • 466
收藏助手
不良信息举报
您举报文章:计算机中的“句柄”是什么意思?
举报原因:
原因补充:

(最多只允许输入30个字)