社区
界面
帖子详情
调试信息unused=???是什么意思?
mirroatl20
2012-11-12 11:41:51
rbbi.hbmBack = 0x5a053b7f {unused=??? }
...全文
336
1
打赏
收藏
调试信息unused=???是什么意思?
rbbi.hbmBack = 0x5a053b7f {unused=??? }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
redui
2012-11-13
打赏
举报
回复
1
这是系统句柄定义的一个小技巧,用来解决编译和类型转换的问题。 句柄本身只是一个无意义的整数,多数情况下HANDLE被定义成void*,但某些句柄之间有逻辑上的类似“继承”的关系,比如GDI中的资源对象句柄,“基类”句柄就是HGDIOBJ,“派生类”句柄包括HBITMAP/HICON/HFONT/HPEN/HBRUSH等等,它们都是HGDIOBJ句柄。如果还是采用void*的方式定义,句柄之间是可以随意转换类型的,为了让编译器能阻止某些句柄的随意转换,部分句柄不再采用void*方式定义,而是使用结构体指针,结构的好处是能派生,编译器可以实现合法的类型转换,同时阻止不合法的类型转换。 怎么定义代表句柄的结构体呢?因为句柄本身还是一个无意义的整数值,所以在结构体中定义任何成员都是无意义的,但是为了占位,在结构体中使用了一个unused成员,其实就是告诉你这个成员也是不使用的,无意义的。但你调试的时候,调试器并不知道这个结构体指针是一个句柄,仅把它当做一个普通的结构体,所以会尝试显示unused成员,至于显示???是因为句柄(指针)是一个非法指针,比如0x00008000,调试器是不会读取任何非法指针指向的内存数据的,仅显示???。
C++系列第2:C++2.0(11+14+17+20)详解及多线程实战
48 条件分支语句初始化 49 聚合初始化 50 嵌套命名空间 52 lambda表达式捕获*this的值 53 改写/继承构造函数 54 用auto作为非类型模板参数 55 __has_include 56 fallthrough 57 nodiscard 57 maybe_
unu
sed
58 第4章 ...
C++调试时出现
unu
sed
= 0
调试时出现
unu
sed
= 0,以为变量没有正确赋值,继续运行程序却成功执行了。 变量窗口的值那一列的{}中的内容是可以忽略的。
SendMessage、PostMessage原理
首先,在基本Win32工程代码中,我们可以直接看到消息处理函数、消息循环,所以建立一个基本Win32工程(本篇文章使用VS2005),为了看到更多信息,我们需要进行设置,让 VS2005载入Microsoft的Symbol(pdb)文件[1...
VS调试FindWindow的HWND出现
unu
sed
<无法读取内存>
VS调试FindWindow的HWND出现
unu
sed
C语言 动态链表的注意点(出现0xcdcdcdcd的情形)
此时我们再运行一下程序,然而并没有任何改善,并且我们产生了一个更大的疑问,没有修改之前我们应该只能输出第一行数据,可为什么两行都输出了呢? 带着疑问,我进行了单步调试。 调试 调试过程中,...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章