句柄是什么

小编 802

句柄(handle),有两种解释

名列前茅种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统所管理的内存块或对象时,就要使用句柄。第二种解释:整个Windows编程的基础。句柄是Windows用来标识被应用程序所建立或使用的对象的少数整数。

一、为什么需要句柄

由于虚拟内存的存在,很多进程的代码和数据并未全部载入内存,进程的某一段在载入内存后,也可能被换出到外存,再次载入这段时其所在的内存地址也会发生变化,也就是说,进程的内存地址是会发生改变的,那程序如何准确定位到对象的内存呢,这时就需要句柄了。

系统为每个进程在内存中分配一定的区域,用来存放各个句柄。每个句柄为一个指针,指向内存中的另一个区域(我们不妨称之为区域A)。而区域A中存放的正是对象在内存中的地址。当对象在内存中的位置发生变化时,区域A的值被更新,变为当前时刻对象在内存中的地址,而在这个过程中,区域A的位置以及对应句柄的值是不发生变化的。

二、句柄在Windows中的使用

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

应该明白的是,句柄是一个标识符,是用来标识对象或者项目的。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,以引用相应的对象。

三、使用函数句柄有什么好处

1、提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对你的速度会有提高的。

2、使用可以与变量一样方便。比如说,我再这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径。

四、常用句柄类型

HWND 窗口句柄

HINSTANCE 当前实列句柄

HCURSOR 光标句柄

HFONT 字体句柄

HPEN 画笔句柄

HBRUSH 画刷句柄

HDC 设备环境句柄

HBITMAP 位图句柄

HICON 图标句柄

HMENU 菜单句柄

HFILE 文件句柄

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部