如何理解句柄?

feifei 2000-03-11 08:55:00
哪位大虾帮帮初学者?
...全文
417 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianshu 2000-03-27
  • 打赏
  • 举报
回复
不同的句柄有不同的含义
比如HMODULE是IMAGE的基地址
whongshu 2000-03-24
  • 打赏
  • 举报
回复
句柄就是指向内存块的地址
laole 2000-03-23
  • 打赏
  • 举报
回复
呵呵,如果把对象和人相比,你可以把句柄理解为身份证。
它是随对象的生成而产生,随对象的销毁而消灭。任何时
候只有知道了对象的句柄,就可以找到对象。
sunsetyang 2000-03-23
  • 打赏
  • 举报
回复
比较通俗一点的说:句柄就是一种利于系统作封装处理的数据结构。它的封装有利于向用户隐藏实现上的细节。它的维护由系统统一维护,有利于维护程序的健壮性。
艺赛旗-norman66 2000-03-23
  • 打赏
  • 举报
回复
我感觉句柄比较稳定、安全,存在的时期较长。就象字符指针对于字符数组一样。字符指针得分配内存,字符数组是系统分配的临时变量。不过,句柄得删除,不然,会造成内存泄漏。
gaoxiaofeng 2000-03-16
  • 打赏
  • 举报
回复
我也是初学者,我这样体会:句柄类似于指针,不过指针读的是某些变量,而句柄是读取某些object所用。需要用它来获得对应于各类的变量(如窗口、滚动条、对话框等)。我的一点个人感受。
Shania 2000-03-16
  • 打赏
  • 举报
回复
句柄是windows为了充分利用内存而引入的一个机制,在32位系统中,它是一个32位的unsigned int;其中保存了一些有关内存地址的信息;它类似于指针但又和指针不同,
大家都知道指针代表了一个内存地址,用于标始一块内存。在windows中,内存块是可移动的(优化内存的使用),所以我们在使用内存时,当内存发生移动时,原来的指针值代表的内存已经发生了变化。所以windows引入了句柄的概念。句柄值不会变,指针值会变(内存块移动)。
看了下面的例子你就会明白一点:

//申请内存,得到唯一句柄值。
HGLOBAL handle = GlobalAlloc(..,..);

//锁定内存块,不让它移动,这样用户就
//可以通过指针来使用内存块,而不致于由于内存块的移动,而导致指针无效。
char* ptr = (char*)GlobalLock(handle);


//use the memory you alloced;such as;
*ptr='h';

GlobalUnlock(handle);//用好后,内存块解锁,允许移动。
GlobalFree(handle);//如果不再需要内存,释放它。

其实象HWND,HBRUSH,HDC,....等等句柄,它们代表的都是一块有特定内容的内存块!
ZPoint 2000-03-16
  • 打赏
  • 举报
回复
简单地说,句柄就是你定义的对象的指针,你可以在它销毁之前任意地使用它。
lu0 2000-03-12
  • 打赏
  • 举报
回复
一个OS才理解的值.可能为指针,或数值或其他.
是作为便于OS自身运作而存在的一个东东.
kxy 2000-03-11
  • 打赏
  • 举报
回复
已答问题中有

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧