句柄真是个神奇的东西,记得本科时学编译原理有这个东西,后来看c++有句柄类,今天才意识到windows编程的而基础也叫句柄。
我看了网上几篇帖子的介绍,现在按照自己的理解复述一遍,也不知道准不准确。
windows是基于虚拟内存的,也就是为了满足各种应用程序内存的需要,windows的内存管理器经常来回的换入换出对象。这说明一个对象在内存中的位置是变化的,那怎样才能找到他呢?windows就成立了一家中介叫handler,当生成一个对象时,windows不返回这个对象的地址,而是返回存储这个对象地址的那个位置的名称,一个32bit的标示,也就是句柄。句柄可以看做是地址的地址,只不过这个地址的地址在整个程序运行过程中都不改变。
我们在要引用这个对象的时候,就来找它地址的地址,然后取出它的地址,然后找到它。当内存管理器要更换这个对象的地址时,只要更新这个地址的地址,就可以保证以后还能找到它了。