博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 句柄与指针的区别
阅读量:4106 次
发布时间:2019-05-25

本文共 593 字,大约阅读时间需要 1 分钟。

学习C++的人都知道句柄和指针,而且我发现很多人在句柄与指针之间直接划等号,对我们来说两者都是地址,我觉的这也造成很多人将句柄和指针划等号的直接原因。

  首先说指针吧。通俗一点就是地址,他是内存的编号,通过它我们可以直接对内存进行操作,只要地址不变,我们每次操作的物理位置是绝对不变,记住这句话,这是句柄和指针的重大区别所在。
  再说说句柄吧,一般是指向系统的资源的位置,可以说也是地址。但是这些资源的位置真的不变,我们都知道window支持虚拟内存的技术,同一时间内可能有些资源被换出内存,一些被换回来,这就是说同一资源在系统的不同时刻,他在内存的物理位置是不确定的,那么window是如何解决这个问题呢,就是通过句柄来处理资源的物理位置不断变化的这个问题的。window会在物理位置固定的区域存储一张对应表,表中记录了所有的资源实时地址,句柄其实没有直接指向资源的物理地址,而是指向了这个对应表中的一项,这样无论资源怎样的换进换出,通过句柄都可以找到他的实时位置。
  总的来说,通过句柄可以屏蔽系统内部的细节,让程序设计可以不必考虑操作系统实现的细节。如果还不能理解句柄与指针之间的区别,可以想象指向指针的指针,可以把句柄当作一个指向指针的指针来理解。

http://www.cnblogs.com/kanong/archive/2010/09/04/1818020.html 

你可能感兴趣的文章
理解 HTTPS 的工作原理
查看>>
解决命令启动Android模拟器出现lib64OpenglRender.so: cannot open shared object file问题
查看>>
全站 HTTPS 来了
查看>>
Win8.1/10中删除文件的默认关联程序
查看>>
修改Android系统默认关闭“验证应用”功能
查看>>
Win10下使用PHP7+XDebug+Sublime Text 3搭建PHP集成开发环境
查看>>
即使被拖库,也可以保证密码不泄露
查看>>
Android网络时间同步
查看>>
最简明扼要的 Systemd 教程,只需十分钟
查看>>
Gradle的神奇之处
查看>>
受用不尽的Gradle使用方法与技巧
查看>>
Android系统移植与调试之------->如何修改Android的默认语言、默认时区
查看>>
Grub 2:拯救你的 bootloader
查看>>
Android开发中常用ADB命令总结
查看>>
grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
查看>>
Android抓取各种log的方法
查看>>
在项目中记住Github用户名和密码的方法
查看>>
个人总结的一些C/C++编码规范
查看>>
10个超赞的jQuery图片滑块动画
查看>>
使用CentOS7配置Squid代理
查看>>