VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1213|回复: 3

[转载] 句柄和指针

[复制链接]
28_avatar_middle
在线会员 发表于 2010-12-26 22:37:21 | 显示全部楼层 |阅读模式
                       
句柄是一些表的索引也就是指向指针的指针,句柄和指针都是地址,句柄是Windows编程的一个关键性的概念,编写Windows应用程序总是要和各种句柄打交道。
   所谓句柄,就是一个唯一的数,用以标识许多不同的对象类型,如窗口、菜单、内存、画笔、画刷等。在Win32里,句柄是指向一个“无类型对象”(void*)的指针,也就是一个4字节长的数据。
无论它的本质是什么,句柄并不是一个真正意义上的指针。从构造上看,句柄是一个指针,尽管它没有指向用于存储某个对象的内存位置。事实上,句柄指向一个包含了对该对象进行的引用的位置。
句柄的声明是这样的:
typedef void *HANDLE
由于Windows是一个多任务操作系统,它可以同时运行多个程序或一个程序的多个副本。这些运行的程序称为一个实例。为了对同一程序的多个副本进行管理,Windows引入了实例句柄。Windows为每个应用程序建立一张表,实例句柄就好象是这张表的一个索引。
  不同在于:
  1、句柄所指的可以是一个很复杂的结构,并且很有可以是与系统有关的,比如说上面所说的线程的句柄,它指向的就是一个类或者结构,他和系统有很密切的关系,当一个线程由于不可预料的原因,而终止时在系统就可以回它所占用的资料,如CPU,内存等等,反过来想可以知道,这个句柄中的某一些项,是与系统进行交互的。由于Windows系统,是一个多任务的系统,它随时都可能要分配内存,回收内存,重组内存。
  2、指针它也可以指向一个复杂的结构,但是通常是用户定义的,所以的必需的工作都要用户完成,特别是在删除的时候。 但在VC++6.0中也有一些指针,它们都是处理一些小问题才用的,如最常见的字符的指针,它也是要用户处理的如果你动态分配了内存;但是Cstring就不要用户处理了,它其实是VC++中的一个类,所以的操作都由成员函数完成,产生(分配)由构造函数,删除(回收)由析构函数完成。

评分

参与人数 1驿站币 +12 收起 理由
09_avatar_small haoran + 12 感谢一直发帖。希望继续为驿站做贡献,谢谢.

查看全部评分





上一篇:HOOK专题
下一篇:vc编译exe的体积最小优化
57_avatar_middle
在线会员 发表于 2010-12-27 16:20:42 | 显示全部楼层
可否这样简单的理解:句柄是用来标志某个资源的,指针是关联于某段内存的?
40_avatar_middle
在线会员 发表于 2011-2-15 23:41:16 | 显示全部楼层
都是大牛啊。。。
26_avatar_middle
在线会员 发表于 2016-7-14 02:53:32 来自手机 | 显示全部楼层
我就笑笑不说话1468448552.58
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-8-23 18:07

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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