C++中句柄的介绍

句柄概念 在Windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。但由此而产生的句柄概念也大同小异,比如:《Microsoft Windows 3 Developer's Worksh

句柄概念 在Windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。但 由此而产生的句柄概念也大同小异,比如:《MicrosoftWindows3Developer's Workshop》(MicrosoftPress,byRichardWilton)一书中句柄的概念是:在 Windows环境中,句柄是用来标识项目的。 在程序设计中,句柄是一种特殊的智能指针。当一个应用程序要引用其他系统 (如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。 句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是 由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。这种间 接访问对象的模式增强了系统对引用对象的控制。 在上世纪80年代的操作系统(如MacOS和Windows)的内存管理中,句柄被广 泛应用。Unix系统的文件描述符基本上也属于句柄。和其它桌面环境一 样,WindowsAPI大量使用句柄来标识系统中的对象,并建立操作系统与用户空间之 间的通信渠道。例如,桌面上的一个窗体由一个HWND类型的句柄来标识。如今,内 存容量的增大和虚拟内存算法使得更简单的指针愈加受到青睐,而指向另一指针的 那类句柄受到冷淡。尽管如此,许多操作系统仍然把指向私有对象的指针以及进程 传递给客户端的内部数组下标称为句柄。[1] 项目包括 *.模块(module) *.任务(task) *.实例(instance) *.文件(file)

腾讯文库C++中句柄的介绍