句柄的真正理解

举报
知识浅谈 发表于 2022/06/28 23:02:59 2022/06/28
【摘要】 **真理一句话:句柄是引用,而不是指针。只能改变对应对象的内容,但不知道对象在哪。 ** 以下内容摘取网上资源,如有违反作者版权,请通知。 句柄是用来标识项目的。(它就象我们的姓名一样,每个人都会有一...

**真理一句话:句柄是引用,而不是指针。只能改变对应对象的内容,但不知道对象在哪。 **

以下内容摘取网上资源,如有违反作者版权,请通知。

句柄是用来标识项目的。(它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。有一说法是指向指针的指针)
项目包括:模块(module)、任务(task)、实例 (instance)、文件(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域 (region),以及设备描述表(device context)。
实质:
在windows中,句柄是和对象一一对应的32位无符号整数值。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
形象说法:要想控制某一设备,不去直接控制设备,而是控制设备的操作手柄。
使用句柄的好处:
windows需要向程序员提供必要地编程接口,在这些接口中,允许程序员访问、创建和销毁对象。出于封装地考虑,windows并不想向程序员返回指针。
句柄和对象映射:
在windows中,存在两种映射方式
a. 全等映射,也即,句柄本身就是一个指针,映射在这里只是类型转换而已。这种情况有,进程实例句柄或模块句柄,以及资源句柄等等
b. 基于表格的映射。这是对象指针与句柄之间最普通的映射机制。操作系统创建表格,并保存所有要考虑的对象。需要创建新对象时,要先在表格中找到空入口,然后把表示对象的数据添入其中。当对象被删除时,它的数据成员和其在表中的入口被释放。
句柄和指针的区别:句柄就是你的上smth的ID 通过这个id,无论你在那里我都可以找到你, 但是指针就好像你上机的地方, 在这个地方,可以找到你, 但是你的id是不变化的 ,上机地方可以变。

文章来源: englishcode.blog.csdn.net,作者:知识浅谈,版权归原作者所有,如需转载,请联系作者。

原文链接:englishcode.blog.csdn.net/article/details/78605965

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。