句柄什么意思?
句柄有两种意思,其中第一种是指程序设计,第二种是指Windows编程。
句柄实际上是一个数据,是一个Long (整长型)的数据。
句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。
WINDOWS句柄有点象C语言中的文件句柄。
从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。
从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
扩展资料:
句柄的具体作用:
Windows是一个以虚拟内存为基础的操作系统。在这种系统下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。
地址总是如此变化 ,为了寻找到对象,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。
Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。
这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
参考资料:百度百科-句柄
句柄是计算机用语,本质上就是一个数字,它通常与当前系统中的整数数相同,例如,在32位系统中,它是4个字节。
这个数字是一个对象的唯一符号,与该对象一一对应,此对象可以是块内存、资源或服务(如套接字、线程)的上下文等。
这个数字有很多来源,只要它能确保与它所代表的对象的唯一对应。例如,可以使用内存地址、句柄表序列号,或者简单地使用自动递增ID,或者使用上面的值来异或常量。
扩展资料:
Windows为何要设置句柄?
windows之所以要设置句柄,根本上是因为内存管理机制的问题-虚拟地址。简而言之,需要更改数据的地址,变更后,需要有人记录管理变更(就像户籍管理一样)。
因此,系统使用handle来记录数据地址的变化。
传统上,操作系统内核和系统服务API都是C语言接口,但它们的内部设计思想都是面向对象的,因此存在一个没有相应语言语法支持的对象概念。
handle的功能是在C语言环境中替换C++的对象指针。创建句柄就是构造,破坏句柄就是分析,用句柄调用函数就等于传递这个指针。
如果有带C++接口的系统API,则没有句柄,而是接口指针ixxxxptr等,如windowscomPTR。
参考资料来源:百度百科-句柄
第一种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
第二种解释:整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。
例如:我此刻回复你的浏览器的窗口句柄是69010.当然这个句柄号在我电脑里是69010.在你电脑里又会是另一个号,而且当我将这个窗口关掉再打开,句柄号又会再变成另一个