最近,我读了一个人写的白皮书,他把指向结构的指针作为句柄。作者显然是以前在windows平台上编写过C代码的人。Googling表明windows程序员通过句柄与系统组件交互。我想知道windows程序员把所有的结构指针都当作句柄来引用是不是很普遍?或者句柄这个术语的含义不仅仅是指向结构的指针?我是以linux C程序员的身份问的。
我所指的白皮书是: Duff,Heroux和Pozo。稀疏基本线性代数子程序概述:来自BLAS技术论坛的新标准。ACM数学软件学报,第28卷,第2期,2002年6月,第239-267页。
发布于 2009-12-18 02:23:10
术语句柄通常指的是某个不透明的值,它只对生成它的API有意义。在Win32中,句柄类型要么是内核内存中的指针(应用程序无论如何都不能访问),要么是某个内核内部数组的索引。
发布于 2009-12-18 02:26:00
句柄是一个古老而受人尊敬的概念。
cookie也是一样的东西。或者GUID。或者从停车场取回你的车的罚单,或者从高级餐厅取回你的大衣,等等。
它的任何独特的价值,当提交给发行者时,可以用来追踪到发行者想要的任何不透明的机制所引用的实际的东西。你可能知道也可能不知道关于这个过程的任何东西,也可能不知道底层的东西是什么,确切地说(只是在概念上)。
它曾被Windows大量使用,但它肯定不是Windows独有的。
您通常不会使用"handle“来表示”结构指针“。句柄更像是"token“而不是”pointer“。它指的是某些东西--文件、系统资源、内存、状态快照等。但它到底是什么,是基于句柄本身的上下文(即谁发出了句柄)。
句柄在K&R C的早期文件系统编程中也被大量使用。
发布于 2009-12-18 02:21:04
我使用句柄这个词来表示指向表示资源的“对象”的指针--通常是操作系统资源,而指针只是指向一些内存。如果你有一个句柄,你不应该尝试直接读写字节,而是通过提供的方法来操作它。
句柄通常被实现为不透明的void *,这进一步鼓励您不要尝试直接取消对它的引用。
https://stackoverflow.com/questions/1923599
复制相似问题