2024年9月20日

句柄和指针有什么区别

句柄和指针有什么区别?

句柄和指针有什么区别图1

句柄实际上是一个指向某些资源的指针,但它不同于指针:指针对应于内存中数据的地址,指针可以自由修改数据。Windows不希望一般程序修改其内部数据结构,因为这太不安全了。因此,Windows为每个使用GlobalAlloc和其他函数声明的内存区域指定了一个句柄。通常,您在调用API函数时只使用此句柄来解释要操作的内存。当您需要直接操作内存时,可以使用Globallock锁定内存并获得指针直接操作。

句柄的分类是什么?

句柄是一个数字,一般与当前系统下的整数位数相同,如32bit系统下的四个字节。这个数字是对象的唯一标记,与对象一一对应。这个对象可以是块内存、资源或服务context(例如 socket,thread)等等。这个数字的来源可以有很多,只要它能保证与它所代表的对象唯一对应,比如内存地址、句柄表的序列号,或者简单地使用自添加的ID,或者使用上述值不同或常数。

传统上,操作系统内核和系统服务API都是 C 语言界面,但其内部设计概念是OO,因此有对象概念,但没有相应的语言语法支持。句柄的作用是 C 替代语言环境 C 使用对象指针。

创建句柄就是结构,销毁句柄就是分析,用句柄调用函数相当于传入this指针。如果有系统API, C 接口,那么就没有句柄了,而是一个接口指针,IXXXPTR等等,比如Windowscom ptr。

以上都是关于句柄和指针的区别,以及句柄和指针的区别。我希望它能帮助你。