码迷,mamicode.com
首页 > 其他好文 > 详细

C编程中HANDLE变量是什么?

时间:2020-02-13 15:18:17      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:遇到   获得   log   资料   理解   handle   AMM   了解   链接   

最近在学习C语言,编写一个贪吃蛇程序时遇到HANDLE变量,边上网查了下资料;对于平常使用,我觉得大概理解下面的内容就可以了:

1.Handle,也叫句柄,实际上是一个数据,是一个Long (整长型)的数据,是一种指向指针的指针。

2.Handle的含义:是一个标识符,是拿来标识对象或 者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只 一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

3.为什么要设置HANDLE,直接用指针调用对象不可以吗?Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来 回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就 可以间接地知道对象具体在内存中的哪个位置。

即:

理论上:句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地 
址(不稳定)→实际对象

功能上:句柄是个指针,但它是个二级指针(指向指针的指针).如果你拥有了一个对象 
的句柄. 你就可以操作对象的所有公共方法. 

 

以上理解来自下面这两篇链接,更细致的解释可戳:

https://www.cnblogs.com/Bryantly2rase/p/4671147.html

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e73236c-dbe1-4493-ac07-c0c963e35852/what-is-handle-in-c-programming?forum=netfxbcl

C编程中HANDLE变量是什么?

标签:遇到   获得   log   资料   理解   handle   AMM   了解   链接   

原文地址:https://www.cnblogs.com/debug-the-heart/p/12303480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!