当前位置 : 主页 > 编程语言 > c语言 >

句柄和指针的区别

来源:互联网 收集:自由互联 发布时间:2023-08-28
句柄实际上是一种指向某种资源的指针,但与指针又有所不同:指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构

句柄实际上是一种指向某种资源的指针,但与指针又有所不同:指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。Windows并不希望一般程序修改其内部数据结构,因为这样太不安全。所以Windows给每个使用GlobalAlloc等函数声明的内存区域指定一个句柄(本质上仍是一个指针,但不要直接操作它),平时你只是在调用API函数时利用这个句柄来说明要操作哪段内存。当你需要对某个内存进行直接操作时,可以使用GlobalLock锁住这段内存并获得指针来直接进行操作。  

这句话的意思就是,指针的权利比较强大,直接操作指针,那么它可以任意修改任意数据,无所不能;而句柄则是受到了一定的功能约束,即,只能使用系统提供的API来操作这些数据(加入系统只提供了A,B,C三个服务,那么句柄就只能使用这三个服务,而指针就可以使用其他的,或者自定义的一些,即可能是D,F等服务。)

补充:句柄是由操作系统分配的长整数,类似ID号,主要是用于系统的区分。


上一篇:Java中StringBuilder与String的互相转换
下一篇:没有了
网友评论