C++ 中的句柄是什么?

2024-01-12

有人告诉我,句柄有点像指针,但其实不是,它允许您保留对对象的引用,而不是对象本身。更详细的解释是什么?


句柄可以是从整数索引到指向内核空间中资源的指针的任何内容。其想法是,它们提供了资源的抽象,因此您无需了解太多有关资源本身的信息即可使用它。

例如,Win32 API 中的 HWND 是窗口的句柄。它本身是无用的:你无法从中收集任何信息。但将其传递给正确的 API 函数,您就可以用它执行大量不同的技巧。在内部,您可以将 HWND 视为 GUI 窗口表的索引(这可能不一定是它的实现方式,但它使魔法变得有意义)。

编辑:不能100%确定你在问题中具体要问什么。这里主要说的是纯C/C++。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的句柄是什么? 的相关文章

  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 是否可以在两台机器上使用相同的 ssh 私钥/公钥对来访问 git 存储库?

    我最近设置了一个内部 git 存储库服务器 并安装了 gitosis 作为管理工具 并将其启动并运行 只读访问可通过 git 协议获得 写访问可通过使用 ssh 公钥的 gitosis 获得 我有一位开发人员已被授予使用在其桌面工作站上生成
  • 如何指定自定义 libc++

    我已经构建了 libc 并且想在编译程序时使用它 所以我有类似的东西 clang stdlib libc libc so main cpp 但这不起作用 在构建应用程序时如何使用我的自定义构建的 libc 此信息来自关于 libcxx 的
  • iPhone TCP 连接

    我想在iPhone和PC之间建立tcp连接 在 PC 上 QTspServer 正在运行并工作 已与其他客户端应用程序进行测试 这是我在 iPhone 上使用的连接方法 IBAction connectToServer id sender
  • 为什么没有像 MSG_WAITALL 这样的标志用于发送?

    旗帜MSG WAITALL可用于recv 这要求recv阻塞直到满足完整的请求 这意味着recv直到达到请求的数据量 由参数指定 才会返回len 已收到 除非发生错误或连接已关闭 为什么这样的标志不适用于send也 我认为这对于发送非常有用
  • 最好的基于 jquery 的灯箱/弹出对话框?

    我正在寻找一个基于 jquery 的弹出对话框 我们将使用它 显示静态内容页面 使用条款等 联系我们页面 已经使用 jquery 表单插件进行 ajax 提交 显示全尺寸的照片缩略图 有人可以推荐一款可以满足上述所有要求并且相当轻量级且易于
  • 如何确定 EventLog 是否已存在

    我正在使用以下行创建新的事件日志 new eventlog LogName Visual Studio Builds Source Visual Studio 我想每次都运行它 因为如果我从新计算机运行构建 我仍然希望查看事件日志 问题是
  • asp.net webforms ajax 更新 gridview

    我们有一个包含大量信息 100 行或行和列 的网格视图 我们需要提高其性能 目前 为了解决一些性能问题 我们使 gridview 没有编辑模板 而是双击一个单元格将弹出一个可用选项的下拉列表 该选项是使用 webmethods 检索并使用
  • jekyll:检查是否没有帖子

    如何查看帖子里是否没有帖子 posts folder 到目前为止 我已经尝试过 if site posts null p No posts yet p endif and if site posts nil p No posts yet p
  • 从 VB 转换为 C#

    我的任务是将解决方案从 VB 转换为 C 有 22 个项目和数百个类 所以我决定研究转换器 我最终选择了 SharpDevelop 这是一个带有转换器的 IDE 我在每个项目上都运行了它 并且有很多错误需要修复 但我应该能够检查它们并希望找
  • Sequelize 增量函数返回错误

    尝试增加我的数据库中模型实例的整数字段 这是相关代码 models Options findAll where PollId poll id name option to update then option gt option incre
  • 删除网址中的主题标签,刷新 f5 时出错(angularJs-cordova)

    我对 AngularJs 中的路由器有一些疑问 我使用了 Angular UI Router 但是当使用 locationProvider 删除 url 中的主题标签 时出现错误 如何解决这个问题 在我的模块中 config functio
  • 使用 JNI 从 C++ 调用 JAVA 方法,无参数

    请耐心听我说 我是一名 iPhone 开发人员 而整个 Android 这让我有点困惑 我有一些从 cocos2d x CCMenuItem 调用的 C 方法 因此 根据文档 我无法发送任何参数 我需要使用 android 浏览器打开一个
  • CSS 箭头在 jQuery SlideUp 或 SlideDown 动画期间隐藏

    我有一个使用 CSS 创建的顶部带有箭头的 div arrow box position relative display none background 88b7d5 border 4px solid c2e1f5 padding 20p
  • 在 ExtJS 中,如何循环菜单项?

    如何循环遍历 ExtJS 工具栏菜单中的所有项目 例如更改其图标 使用 each 方法混合系列 http dev sencha com deploy dev docs class Ext util MixedCollection按钮菜单中的
  • 为什么 XmlDocument.LoadXml 抛出 System.Net.WebException?

    为什么System Xml XmlDocument LoadXml方法抛出System Net WebException 这真是令人难以置信的疯狂 如果MSDN http msdn microsoft com en us library s
  • python 中的专用 @property 装饰器

    我有几个类 每个类都有许多属性 所有属性的共同点是它们应该是数字属性 这似乎是使用 python 装饰器的理想场所 但我似乎无法完全理解正确的实现是什么 这是一个简单的例子 class Junk object def init self v
  • 在 VSCode 中包含 d.ts 类型定义文件

    我已经开始使用 VSCode 0 7 0 并注意到注释说你不必添加 不再参考 引入 jsconfig json 后 您不再需要在每个文件中使用 引用 这些在 VS Code 的初始版本中是必需的 由于文件集是在 jsconfig json
  • python Anaconda 中的 Mayavi

    我安装了mayavi在 Anaconda 中使用命令 conda exe install mayavi 在 Anaconda 命令提示符中 现在 当我关闭 Spyder 时 它就不再打开了 我该如何解决 我正在使用Windows 我想展示我
  • 如何避免Python API服务器中的重复处理? [复制]

    这个问题在这里已经有答案了 假设一个函数detect primes调用起来很昂贵 我想避免使用重复的参数重复调用它 我应该怎么办 使用缓存没有帮助 因为该函数可能会在不同的请求中同时调用 当两个请求都将缓存视为空值时 两个请求都将继续执行昂
  • C++ 中的句柄是什么?

    有人告诉我 句柄有点像指针 但其实不是 它允许您保留对对象的引用 而不是对象本身 更详细的解释是什么 句柄可以是从整数索引到指向内核空间中资源的指针的任何内容 其想法是 它们提供了资源的抽象 因此您无需了解太多有关资源本身的信息即可使用它