句柄和指针都是地址,指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。句柄是一些表的索引也就是指针的“指针”,间接的引用对象。
Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以Windows给每个使用GlobalAlloc等函数声明的内存区域指定一个句柄(本质上仍是一个指针,但不要直接操作它),平时你只是在调用API函数时利用这个句柄来说明要操作哪段内存。当你需要对某个内存进行直接操作时,可以使用GlobalLock锁住这段内存并获得指针来直接进行操作。
使用句柄主要是为了利于Windows在进程内存地址空间移动分配的内存块,以防止进程的内存地址空间产生过多的碎片。 Windows可以修改对象的“物理”地址和描述器的值,但是句柄的值是不变的。
句柄所指的是一个很复杂的结构(内核对象),一般是与系统有关的。指针指向的结构通常是用户定义的,所有的必需的工作都要由用户完成,特别是在删除的时候。
posted on 2008-05-28 23:05  BlueTzar  阅读(941)  评论(0)    收藏  举报