c++ - 将 DWORD 显式初始化为 1,但调试器显示超出范围的值

标签 c++ c winapi dword

我对这个问题有点吃惊 - 在 Debug模式下根本不会出现这个问题,但在 Release模式下感觉我几乎无能为力来解决它。

这是 VS2013 内部发生的事情的屏幕截图:

enter image description here

我初始化nResult为1L,内部显示为3422785012,在Debug模式下,这个值确实是1L。

关于为什么显示的值甚至不接近我为 nResult 设置的初始值有什么想法吗?我试过使用编译器设置 - 在 Debug模式下这段代码运行良好。

最佳答案

您的代码很可能已优化。这意味着编译器以您的源代码与编译器生成的内容不匹配的方式移动和删除了代码。

要么调试未优化的代码,要么在充分了解源代码可能与正在执行的实际指令不匹配的情况下调试优化代码。

如果您想调试发布版本但在调试器中看到正确的值,请转到 Visual Studio 中项目的属性,转到 C/C++ 部分,然后禁用优化。重建。

关于c++ - 将 DWORD 显式初始化为 1,但调试器显示超出范围的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348983/

相关文章:

winapi - 创建 tagSECURITY_ATTRIBUTES 对象

c++ - 从 Derived* 到 void* 到 Base* 的 static_cast

c - 使用套接字在qt中支持多客户端的服务器设计

c - openmp串行比并行快

c - 如何为 Visual Studio 2005 安装 pthread_win32(Windows pthread/posix 线程库)?

windows - 创建虚拟文件夹并将它们挂接到文件系统

c++ - 元组 - 单独标题的原因

c++ - 是否有用于 boost::interprocess 的 'upgrade_to_unique_lock'?

c++ - 如何使用 boost 序列化检测无效输入?

c++ - 为什么我在 TreeView 控件中没有获得复选框单击事件?