昨天小编只是在微头条随手发了一条关于句柄的内容,没想到居然很多人感兴趣,由于微头条的结构限制并不能很好的将句柄讲清楚,今天特地在这里将小编所掌握的关于句柄的知识分享给大家。
句柄是什么
我们先看权威的解释:句柄是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象或实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息;
句柄控制对象的原则是:程序在运行时系统会在为进程分配一块内存,用来存储32位无符号整数,这些数值就是句柄,每个句柄在此处可以理解为一个指针变量,指向系统中一块在进程期间固定的内存。而这块内存不存别的东西,全部储存的是一个个地址,这个地址就是在进程运行期间各对象所在内存的地址。通过这个地址我们就能获取到对应的对象;Windows是一个以虚拟内存为基础的操作系统,在这种环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的需要。对象被移动意味着它的地址变化了,所以在运行过程中我们需要一个唯一且不变的标记来与每个对象对应,已达到不失去对对象的控制权的目的;如下图所示:
理解句柄
上面说的还是有