句柄与指针

来源:互联网 发布:贝叶斯分类算法 知乎 编辑:程序博客网 时间:2024/06/05 08:05

句柄是一个32位的整数,实际上是一个Windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为Windows的内存管理经常会将当前空闲的对象的内存释放掉,当需要时再重新提交到物理内存,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想要访问的对象的句柄传递给系统,系统根据句柄检索自己维护对象列表就能知道程序想要访问的对象的及其物理地址了。

句柄是一种指向指针的指针。应用程序启动后,组成这个程序的各种对象时驻留在内存中的。Windows是一个以虚拟内存为基础的操作系统,在这种环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要。对象被移动意味着它的地址发生了变换。Windows操作系统为各应用程序腾出一些内存地址,用来专门登记各种应用对象在内存中的地址变化,而这个地址本身保持不变。Windows内存管理器移动对象在内存中位置后,把对象新的地址告知句柄地址来保存。这样我们通过句柄地址就可以间接的访问对象所在内存。

0 0