在 Windows 中讨论资源时,什么是“句柄”?它们是如何工作的?
它是对资源的抽象引用值,通常是内存或打开的文件或管道。
正确地 ,在 Windows 中(通常在计算中),句柄是一种抽象,它向 API 用户隐藏真实内存地址,允许系统对程序透明地重组物理内存。将句柄解析为指针会锁定内存,释放句柄会使指针无效。在这种情况下,可以将其视为指针表的索引……您将索引用于系统 API 调用,系统可以随意更改表中的指针。
或者,当 API 编写者希望 API 的用户与返回的地址指向的具体内容隔离开时,可以给出一个真正的指针作为句柄;在这种情况下,必须考虑到句柄指向的内容可能随时更改(从 API 版本到版本,甚至从返回句柄的 API 的调用到调用) - 因此句柄应被视为简单的不透明值 仅对 API有意义。
我应该补充一点,在任何现代操作系统中,即使是所谓的“真实指针”仍然是进程虚拟内存空间的不透明句柄,这使得 O/S 能够管理和重新排列内存而不会使进程内的指针失效.