飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2396|回复: 1

[分享] 什么是句柄

[复制链接]
  • TA的每日心情
    开心
    2022-4-18 15:36
  • 签到天数: 207 天

    [LV.7]常住居民III

    发表于 2008-1-5 00:27:27 | 显示全部楼层 |阅读模式
    每一个进程都有一个句柄列表数组,由Windows管理,比如你GetStockObject后,Windows还是会拷一份到你的进程中,但是再次GetStockObject同一个,是直接返回已经存在的索引,注意是索引,比如,你打开一个文件,成功你会发现返回值是一个立即数,比如15,这就是当前句柄数组中这个物件的索引,Windows在操作句柄时,比如使用ReadFile,hFile,这个hFile是15,Windows读取句柄列表中第15个元素,如果为空,返回失败,成功,再去操作对应的地址.而Windows在退出时会扫描这个句柄数组,将它们全部释放.几乎所有的句柄都是在这个数组中的,只不过每一个元素都有一个结构体,表示是文件句柄/线程句柄/GDI等等。

    而CreateClipRgn,这个函数前是Create而不是Get,那么必须删除,否则会有资源泄漏。

    而GetStockObject/LoadBitmap/LoadIcon之类,在第一次使用时会分配内存返回句柄,之后则是直接返回的。所以不需要删除,你要删除也是可以的,不过删除后下次又会分配/载入,浪费运行时间。

    所以,句柄其实是句柄数组中的索引,而对应索引中的元素才是保存地址的一个标识对象的结构体。

    这就是句柄..
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-1-5 00:33:04 | 显示全部楼层
    呵呵。。不错。。学习VC必须知道的东西。~~
    楼主一定是VC高手吧。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表