news 2026/1/29 3:38:41

句柄到底是个啥?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
句柄到底是个啥?

文章目录

  • 1、什么是句柄?
  • 2、句柄与普通指针的区别?

1、什么是句柄?

句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量—引自科学百科 通过参考网上各路大神的解释,个人认为:句柄就是健康码,它的作用就是让你找到所需的对象去到了何处,因为你始终都可以根据健康码找到对象的所在地,然后找到对象给他做核酸检测。健康码(句柄值)是国家(操作系统)分给你的,你没有自定义的权利。 在操作系统中,我们想要操作一个对象,就要知道它的地址,但是对象的内存地址总是变化,因为在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的。此时windows就搞了一个玩意—句柄,句柄用来管理对象的地址(句柄表),不管对象的地址如何变化,我都可以通过访问句柄来拿到对象的实时地址,进而操作对象。句柄值是操作系统给的,你不能定义。

2、句柄与普通指针的区别?

句柄更偏向于索引表,指针的所指物理内存地址的索引
指针指向系统中物理内存的地址,而句柄是windows在内存中维护的一个对象内存物理地址列表的整数索引,句柄是一种指向指针的指针。也就是管理指针(内存地址)的工具。
句柄的作用范围也是存在局限性的,你只能用句柄最终调用到对象,并作一些系统允许你做的事情,但是你拿到指针的话就能干任何事情了,比如破坏对象。当然,句柄的优点也是显而易见的,句柄很明显更方便管理,部分场景处理对象时比指针快。

句柄:就是用来维护进程或者系统范围内的一个标识。
就比如我们去访问一个文件的时候,同一时刻,只能有一个进程访问,不能有其他,这个句柄就是这个文件锁。
句柄是一个动态的地址,用来记录当前对象的分配,很明显就只有一个。
任何一个对象都有一个句柄。

C# 中因为没有指针 所以指的是windows窗口中(包括窗口本身,以及不可见的窗口?) 每个控件对应的一个找寻得到它们的地址(实际是内存指针) 以便编程时候能够迅速定位它们,设置或者获取这些控件的状态、值等操作。

WPF窗体下: 窗体:IntPtrhwnd=newWindowInteropHelper(this).Handle;控件:IntPtrhwnd=((HwndSource)PresentationSource.FromVisual(uielement)).Handle;// MainWindow.xaml.csprivatevoidButton_Click(objectsender,RoutedEventArgse){varwih=newSystem.Windows.Interop.WindowInteropHelper(this);varhWnd=wih.Handle;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/28 22:33:18

.NET 中常见计时器大全

文章目录1.System.Threading.Timer(线程计时器)1.1. 方法签名1.2. 参数说明1.3. 特殊值处理1.4. 示例:动态控制计时器2.System.Timers.Timer(服务器计时器)2.1. 示例:定期检查服务状态3.System.Windows.Forms.Timer(Windows计时器)3.1. 示例:…

作者头像 李华
网站建设 2026/1/28 19:01:14

三防手持平板赋能仓库WMS系统移动作业高效率

在现代仓储物流管理中,WMS系统的高效运转已成为企业提升作业效率、降低出错率的关键。然而,传统的作业方式常因设备不匹配、环境复杂等因素,影响系统效能的最大化释放。 一、工业级设计,无惧严苛作业环境 仓储作业环境复杂&#…

作者头像 李华
网站建设 2026/1/24 19:18:35

什么是可信计算?基于可信计算的网络安全自适应防护关键技术及应用

什么是可信计算可信计算是指如果一个实体的行为总是按照预期的方式和目标进行,则该实体是可信的。它通过构建从硬件通电到软件运行的全程可信节点监控与保护机制,确保所有环节的安全可信。可信计算经历了从V1.0的容错计算、V2.0的被动可信到V3.0及新时期…

作者头像 李华
网站建设 2026/1/28 20:12:10

Flutter状态管理全解析:Provider vs Bloc vs Riverpod实战对比

一、为什么需要状态管理? 1.1 Flutter状态管理的挑战 在Flutter中,状态管理面临三大核心挑战: 跨组件通信:如何在不同层级组件间共享数据性能优化:如何避免不必要的重建代码可维护性:如何组织复杂应用的…

作者头像 李华
网站建设 2026/1/28 21:09:48

管理案例丨华恒智信助力某大型钢铁集团人力资源管理咨询服务项目——以系统性诊断与双维考核,驱动效率与效能双重提升

【客户类型】生产制造行业、钢铁冶金行业、重型制造业、跨行业多元化集团 【问题类型】组织绩效考核体系重建、跨部门协同机制优化、业绩与管理平衡发展、人力资源管理、企业管理一、项目背景:领军企业的绩效管理之困该集团公司是一家立足山西、辐射全国的行业巨头&…

作者头像 李华