C/C++ 什么是句柄
本质上:句柄是一个指向指针的指针。
一个指向指针的指针保存的是另一个指针的地址,我们可以通过第一个指针来找到另一个指针,然后通过另一个指针访问到具体的数据。
Windows 需要经常在物理内存和虚拟内存之间来回移动数据。数据被移动意味着他的地址发生变化,如果我们还用之前的地址来访问它,那么肯定是会出错的。如何解决这个问题?
为了解决这个问题,Windows 系统专门腾出一块内存空间来保存数据在内存中的地址变化,Windows 每次移动数据偶,都要把数据的新地址告知这个内存空间来保存。而记录地址变化的这块内存空间的地址是保持不变的。
我们把这个不变的地址叫作句柄。我们便可以通过改句柄找到数据的最新地址,然后访问该数据。
当然,每次重启程序的时候,Windows 操作系统分配的句柄都是不一样的,就像每次抽奖抽到的号码不同一样,但也有可能,不过几率太小。