C++ DWORD与64位操作系统
【背景】闹心,这两天在调试一个C++的IOCP服务器,我在win x64下进行编译,发现当客户端断开连接后,IOCP服务器端在销毁(或重置)socket时会报错:读取访问权限冲突。this 是 0x78DECC0。作为新手小白用着拙劣的调试手段,花了20多个小时一步一步从析构函数追踪到CreateIoCompletionPort()函数的第三个参数CompletionKey没有正确被绑定。直到刚才才发现,我原来的代码是
CreateIoCompletionPort((HANDLE)listenSockContext->connSocket, completionPort, (DWORD)listenSockContext, 0)
问题就出在这个(DWORD)listenSockContext上,在64位系统下,我的这个指针listenSockContext是64位的,而DWORD不论在64还是32位系统里,都是32位(double word双字),也就是说,这样强制类型转换,使我丢失了高32位数据。最后,将DWORD换成DWORD_PTR,完美解决。
CreateIoCompletionPort((HANDLE)listenSockContext->connSocket, completionPort, (DWORD_PTR)listenSockContext, 0)
【内容】DWORD即双字,在64位和32位系统下这个值始终是32位的,而DWORD_PTR可以根据编译的系统类型,编译器自动选择相对应的位数。
【P.S.】感谢会卖萌的吴老师。
C++ DWORD与64位操作系统相关推荐
- 64位操作系统——(二)kernel
64位操作系统--(二)kernel 作者:王赛宇 参考列表: 主要参考:<一个六十四位操作系统的设计与实现>--田雨 <Using as> --Dean Elsner &am ...
- win32程序时如何在64位操作系统上运行的
1,利用下面的代码编译成32位的程序,然后在64位操作系统中放入OD中进行调试. #include<Windows.h> #include<stdio.h> void main ...
- 解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed
解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed 参考文章: (1)解决wi ...
- VM8不能安装64位操作系统原因解析
在64位的WIN7系统上,遇到64位系统无法在VMWARE8中安装的问题,刚开始以为是下载的ISO和VMWARE软件有问题.试了好几次发现,不管是Linux还是Windows,只要是64位系统都不能安 ...
- VMWare不能安装64位操作系统原因探析
您已经配置此虚拟机使用64位客户操作系统.然而,64位操作系统不可用.此主机具有虚拟化支持能力的,但虚拟化技术被禁用. 这通常是因为虚拟化技术已经在BIOS /固件设置或禁用或主机没有权限改变此设置. ...
- Win10的64位操作系统,Visual Studio 2019配置OpenCV4.1.0
一.Win10的64位操作系统,直接在VS官网下载VisualStudioCommunity,默认安装,安装的是VisualStudioCommunity2019: (安装的[工作负载]步骤时选的是[ ...
- 在RedHat4 64位操作系统下,安装Oracle 10g
在RedHat4 64位操作系统下,安装Oracle <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:offi ...
- 64位操作系统下IIS报“试图加载格式不正确的程序”错误
缘由:在64位操作系统下IIS发布32位的项目,报"项目依赖的dll无法读取,试图加载格式不正确的程序"错误. 原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的 ...
- 数据源名称和 64 位操作系统
如果您要将某一应用程序构建为在 64 位操作系统上运行的 32 位应用程序并运行该应用程序,则必须使用 %windir%\SysWOW64\odbcad32.exe 的 ODBC 管理器创建 ODBC ...
最新文章
- Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name 解决
- GDCM:独特的uid测试程序
- Python查询MySQL进行远程采集图片实例
- 论文浅尝 | 时序与因果关系联合推理
- 机器学习经典算法笔记——线性回归
- Pytorch:Dataset总结
- 项目管理实践之版本控制工具SVN在Windows平台下的平台搭建
- dom4j 解析xml文件demo
- 2dpsk调制解调实验matlab_贼详细的8PSK调制与解调详细过程
- Centos6 安装可视化界面
- Linux下查看日志常用命令
- C# .net实现发送手机短信功能
- js弹窗确认取消php,JS实现删除时的确认弹窗
- 读后感:八部众---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十三)
- eclipse java验证码_spring整合kaptcha验证码
- PC时代的20位英雄
- 第九周项目六--三色球问题
- 《操作系统》第十二章习题加解析(重点学习内容)
- 烽火HG680-KA/KB_Hi3798MV310_红外蓝牙语音_开启无线开关_通刷固件包
- Axure RP出现无法预览