所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。 句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象 本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。 说白了,句柄的值就是上面所说的那个固定的地址,该地址的内存中存放的是实际对象的(变化的)地址。转自本站的一个网友!!

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/coolmousewife/archive/2009/09/28/4608922.aspx

mfc中句柄与指针的区别相关推荐

  1. c++中别名和指针*的区别

    c++中别名&和指针*的区别 int n;int &m = n; 在C++中,多了一个C语言没有的引用声明符&,如上,m就是n的引用,简单的说m就是n的别名,对m的任何操作,对 ...

  2. 句柄与指针的区别与联系

    原帖地址(http://mahanyang94.blog.163.com/blog/static/25498051200911176212455/) 句柄其实就是指针,但是他和指针最大的不同是:给你一 ...

  3. 句柄与指针的区别(二)

    句柄vs指针 句柄是一种指向指针的指针.我们知道,所谓指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.如果简单地理解,似乎我们只要获知 这个内存的首地址,那么就可以随时用这个地 ...

  4. 句柄与指针的区别(一)

    句柄其实就是指针,但是他和指针最大的不同是:给你一个指针,你可以通过这个指针做任何事情,也许是好事,也许是通过这个指针破坏内存,干一些捣乱的事情.这个我想大家都会碰到过,因为乱用指针导致程序崩溃 句柄 ...

  5. C++中引用与指针的区别(详细介绍)

    转载:http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.html C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可 ...

  6. MFC中MessageBox和AfxMessageBox函数区别和用法

    MessageBox函数定义: //__WINUSER_H__中定义:(Win32 API)#define MessageBox MessageBoxAint WINAPI MessageBoxA(H ...

  7. 浅谈C++中引用和指针的区别

    之前我们介绍了什么是引用,错过的小伙伴们可以戳这里 ↓ https://blog.csdn.net/Sun_Life_/article/details/89304920 既然引用底层是用指针形式实现的 ...

  8. MFC中OnDraw与OnPaint的区别

    OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中. OnPaint()是CWnd的类成员,负责响应WM_PAIN ...

  9. 句柄的意义和作用以及句柄和指针的区别

    句柄 什么是句柄?首先这个单词听起来就有点怪,只知道有把柄,句柄对应单词是handle,把手,一个门把手可以打开一扇房间的门,句柄是一个特殊的代号,windonw系统可以通过一个特定的句柄打开一个特定 ...

  10. c++中引用和指针的区别

    1.指针是一个实体,需要分配内存空间.引用只是变量的别名, 不需要分配内存空间. 2.引用在定义的时候必须进行初始化,并且不能够改变.指针在 定义的时候不一定要初始化,并且指向的空间可变.引用的初始 ...

最新文章

  1. 关于C#调用非托管DLL,报“内存已损坏的”坑,坑,坑
  2. MIT的这个AI,专治抗生素滥用,二次抗生素直降67%
  3. 当MyBatis 3.5.X遇上JDK8竟然出现了性能问题,全项目组都得加班~
  4. 赠书:亿级流量峰值没在怕,“缓存”技术来减压!
  5. 小凡模拟器使用视频(续)
  6. iOS 层层推进实现代理模式
  7. java jquery jsonp 跨域_Jquery跨域调用(JSONP)遇到error问题的解决
  8. python画哆啦a梦图片_画了个多啦A梦,但是感觉怪怪的
  9. 深入理解JVM虚拟机读书笔记——垃圾回收器
  10. .NET Remoting 使用总结
  11. 搭建本地git代码管理,实现内网Windows进行代码管理
  12. java jsp传值乱码_关于JSP乱码问题(页面传值产生的乱码)
  13. 【测试理论】如何做好探索性测试(二)—增加维度
  14. nRF Sniffer抓包环境搭建
  15. Matlab获取线粒体序列及核苷酸初步分析
  16. open drain push pull 上拉电阻理解
  17. [画板]画PCB和玩植物大战僵尸
  18. pytorch实现批量resize图片尺寸
  19. 【微信小程序】小程序的生命周期
  20. 中石油12203-Darker and Darker

热门文章

  1. Intel CPU命名规则
  2. python *args 和 **kwargs
  3. 阿里java代码规范插件
  4. Java 字符串使用之性能优化实践
  5. Python集合框架
  6. 二叉查找树(BST)的性质
  7. git中clone出来项目,导入到eclipse并运行web项目
  8. 判断是否为一棵树的子树 Subtree of Another Tree
  9. 使用docker分离服务与数据库
  10. zabbix创建ITEM,运算语法