C#等 句柄是什么?
1、什么是句柄?
句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量—引自科学百科
通过参考网上各路大神的解释,个人认为:句柄就是健康码,它的作用就是让你找到所需的对象去到了何处,因为你始终都可以根据健康码找到对象的所在地,然后找到对象给他做核酸检测。健康码(句柄值)是国家(操作系统)分给你的,你没有自定义的权利。
在操作系统中,我们想要操作一个对象,就要知道它的地址,但是对象的内存地址总是变化,因为在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的。此时windows就搞了一个玩意—句柄,句柄用来管理对象的地址(句柄表),不管对象的地址如何变化,我都可以通过访问句柄来拿到对象的实时地址,进而操作对象。句柄值是操作系统给的,你不能定义。
2、句柄与普通指针的区别?
指针指向系统中物理内存的地址,而句柄是windows在内存中维护的一个对象内存物理地址列表的整数索引,句柄是一种指向指针的指针。也就是管理指针(内存地址)的工具。
句柄的作用范围也是存在局限性的,你只能用句柄最终调用到对象,并作一些系统允许你做的事情,但是你拿到指针的话就能干任何事情了,比如破坏对象。当然,句柄的优点也是显而易见的,句柄很明显更方便管理,部分场景处理对象时比指针快。
本文目的在于为各位初学者解释两者区别,更多的知识可翻阅其他博主的文章,感谢。
建议阅读:
https://blog.csdn.net/swordarcher/article/details/81744930
https://blog.csdn.net/macrossdzh/article/details/4588681
————————————————
版权声明:本文为CSDN博主「张一默」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45207460/article/details/121672498
C#等 句柄是什么?相关推荐
- C++代理类,句柄(智能指针)_C++沉思录笔记
代理类 首先定义三个类: class Animal{ public:virtual void getName()=0;virtual void clone()=0; };class Cat:publi ...
- 【MATLAB】函数句柄
在MATLAB平台中,对函数的调用方法分为直接调用法和间接调用法. 1.直接调用函数,被调用的函数通常称为子函数.一个文件中只能有一个主函数. 2.函数句柄--提供一种间接调用函数的方法.创建函数句柄 ...
- WindowsAPI每日一练(2) 使用应用程序句柄
WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.htmlWindowsAPI每日一练(1) WinMain Win ...
- 漫画:对象是如何被找到的?句柄 OR 直接指针?
小贴士:想要使用并定位 Java 对象,就要用到 Java 虚拟机栈(Java Virtual Machine Stack),它描述的是 Java 方法执行的线程内存模型:每个方法被执行的时候,Jav ...
- pyqt创建窗口没有句柄_Filament 渲染引擎剖析 之 FrameGraph 1 虚拟资源的定义与创建...
Filament 使用了可扩展渲染管线(FrameGraph)来组织渲染通道和管理渲染资源,网上也搜了下可扩展渲染管线的相关的文章,一般认为可扩展渲染管线是次时代渲染引擎应该具备的比较先进的管线组织架 ...
- 如何用SPY++工具查看窗体的句柄
我安装的是vs2012,先找到SPY++工具打开 打开方式: 方式1:通过路径(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microso ...
- 小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?通过该试验加深对句柄的理解!!...
小实验:用创建进程()打开计算器,然后关闭进程句柄.再用打开进程(进程ID),使用两次,得到两个进程句柄.实验目的:这两个进程句柄都能控制这个进程吗? .版本 2 .程序集 窗口程序集1 .子程序 _ ...
- Matlab中的图形句柄(转载)
在matlab中,每一个对象都有一个数字来标识,叫做句柄.当每次创建一个对象时,matlab就为它建立一个唯一的句柄 句柄中包含有该对象的相关信息参数,可以在后续程序中进行操作,改变其中的参数,以便达 ...
- 解决方法:ORA-24324 未初始化服务句柄
安装oracle的时候有一步出现如下错误: ORA-24324:未初始化效力句柄 ORA-24323:不准许此值 ORA-28547:衔接效力器失利,也许是Oracle Net管制差 ...
- 使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法
2019独角兽企业重金招聘Python工程师标准>>> 使用pyinstaller打包python程序,使用-w参数,去掉console,发现执行命令行的subprocess相关语句 ...
最新文章
- PHP的Reflection反射机制
- CISCO CCNA RIP
- sprintf_s的使用
- IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
- win10 详细配置JAVA环境变量(最详细),操作步骤如下:
- 一个asp.net2005的页面文件调用CSS样式的BUG
- AsyncTask的基础讲解
- mysql2017windows安装_mysql的windows安装
- [Android5 系列二] 1. 全实例之控件(Widget)
- 关于4A系统(我对4A系统的维护的理解)
- 罗永浩回应被中消协点名;传前淘宝直播运营负责人因贪污被阿里通报;TypeScript 4.0 Beta发布​ | 极客头条...
- 开启和关闭oracle数据库中的审计功能
- System.map文件的作用解析
- WPF 弹框 并自动关闭
- 融合7大领域!Apache Flink 在开源生态下的应用实践
- 关于BinaryFormatter
- SQL SELECT语句的基本用法
- awvs无法启动问题
- 基佬大乱斗自建服务器,玩家必看干货基佬大乱斗怎么联机实现双人作战
- 超级详细的教程--如何写SCI