引用和指针-面试题38-什么是句柄

news/2024/7/20 15:48:56 标签: 面试, 内存管理, 操作系统

1:句柄在Windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。在Windows环境中,句柄是用来标识项目的,这些项目包括:

(1)模块(module)

(2)任务(task)

(3)实例(instance)

(4)文件(file)

(5)内存块(block of memory)

(6)菜单(menu)

(7)控制(control)

(8)字体(font)

(9)资源(resourse),包括图标(icon)、光标(cursor)、字符串(string)等。

(10)GDI对象(GDI object),包括位图(bitmap),画刷(brush)、元文件(metafile),调色板(palette)、画笔(pen)、区域(region),以及设备描述表(device context)。

2:Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。由于地址总是如此变化,所以Windows操作系统为各应用程序腾出了一些存储地址,用来专门登记各应用对象在内存中的地址变化,而这地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装在(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。

    因此,Windows程序中并不是用物理地址来标识一个内存块、文件、任务或动态装入模块的,相反,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来操作。

    句柄地址(稳定)->记载着对象在内存中的地址->对象在内存中的地址(不稳定)->实际对象。但是必须注意的是,程序每次重新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况下的确是不一样的。

转载于:https://www.cnblogs.com/lovemi93/p/7643138.html


http://www.niftyadmin.cn/n/1155395.html

相关文章

“盒子”的新想法

小米做了“盒子”,不论它的价值,光从其价格来说,399元,XBMC似乎将要变为只有技术宅们才会用的玩具。 是啊!为了免费观看互联网上的视频,我为什么要花一台PC的价格来实现呢?何况,即使…

多条目日志记录小结

背景:小组长临时被派到其他项目组(一般项目就2个人负责,唯有银行的超大型项目十几个人),致整个项目后续的一切事宜就由我来负责 环境:项目中catch记录log table后,返回默认值(false、…

unity3D 搞定任意ios插件

说起unity调ios插件,好多淫比较头痛,探索再此给大家献上通用手册。首先:需要需要一些OC知识,在OC中所有的界面都是基于View显示的,而要使用第三方提供的ios sdk 仅需简单修改源代码,把相应view添加到unity…

懂也不懂,感觉有点怪,总把它和Java比较,有点乱了

#参数传递 name xiaouser input("username:")pas input("password:")age int(input("age:"))info """---me:%suser:%spas:%sage:%s""" %(name,user,pas,age)print(info)info2 """---me:{a}u…

浏览器内核及渲染过程介绍

原文地址:http://www.nowamagic.net/librarys/veda/detail/634 浏览器可以分为两部分,shell内核。其中shell的种类相对比较多,内核则比较少。Shell是指浏览器的外壳:例如菜单,工具栏等。主要是提供给用户界面操作&…

支付宝支付集成过程中如何生成商户订单号(out_trade_no)

out_trade_no是指商户网站唯一订单号,在商户端唯一,每个商户订单号会对应一个支付宝订单号 ,此订单号由珊瑚自己生成,商户订单号要求64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复,建议格式…

GNOME可能危在旦夕

2019独角兽企业重金招聘Python工程师标准>>> “GNOME开发者离开了他们的现有用户,宣称相信我们,我们比用户更清楚他们需要什么,完全置用户的抗议于不顾,并且继续设计一些完全不适合键盘和鼠标输入的东西..."Slash…

新手如何正确使用CLion之输出hello world

以前只使用过vc6.0,在用过jetbrain的pycharm后就考虑换个c的编译器了,第一还是考虑了vs2017但用惯了色彩鲜艳的jb产品后竟然有点不习惯vs,最后还是果断选择了jb的CLion。 鉴于本人也是个小白,连各种编译器的名字都不认识&#xff…