C++ 应用程序的行为与代码不同
C++ Application behaves differently from code
我正在使用MS Visual Studio 2010用C++编写游戏。游戏几乎处于测试状态,但我在这里面临一个严重的问题,希望有人能够提供帮助。
因此,如果我从 VS 运行游戏(例如使用 F5 键),一切正常。但是,一旦我在游戏的某些时候运行同一游戏的新编译的.exe文件,我就会崩溃并发生其他一些奇怪的事情。我可以做些什么来修复它吗?VS 中可能有一定的设置吗?这真的让我感到困惑,如果有人知道解决方案,请提供帮助。
如果我没记错的话,F5键用于启动调试,并且在调试器中运行时,Visual Studio会执行不在调试器中运行时不会发生的事情。
首先,调试器将为您清除所有内存,这意味着未初始化的变量变为零。此清除包括初始化为空指针的未初始化指针变量。
如果您有未初始化的指针变量并对其进行了空指针检查,则这些检查在调试器中运行时将正常工作,但当不在调试器中运行时,这些变量将具有不确定的值,该值看似随机,并且很可能不是空指针。因此,当您在调试器外部运行时,这些非空指针将使程序认为指针有效,并且您将取消引用它们,这将导致未定义的行为。
您需要做的是遍历代码并查找未初始化的变量,尤其是指针,并确保在使用它们之前正确初始化它们。
像其他提及一样,在与Visual Studio调试器不同的环境中运行时,或者从Visual Studio启动程序时,还有许多其他事情可能会出错。提到的一个主要问题是相对文件路径可能不再正确。从不同目录的命令行运行时,或者通过双击其图标运行时,程序工作目录将与从 Visual Studio 中启动时不同。最好使用某种配置值来说明游戏资产和其他文件的基本目录。然后,您可以将进程当前工作目录更改为该目录,或者使用它自己解析资产的绝对路径。
相关文章:
- 我可以在 iOS 或 mac 应用程序中使用C++代码吗?
- 从运行服务的应用程序代码中提取窗口句柄
- 使用本机 C++ 应用程序中的 C# 代码
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 使用全局 IP 地址时,C++ winsock 2 应用程序中的代码是否必须更改?
- 我在哪里编写在退出 C++ 窗口窗体应用程序之前执行的代码部分
- 为什么在Visual Studio中用c ++编写GUI应用程序的代码与控制台应用程序的代码不同?
- 剥离C++库中的应用程序不需要的代码
- OpenGL 应用程序退出,退出代码为 -1073741515 (0xC0000135)
- DoModal 主应用程序随机返回 -1 代码
- 使用 IPC 共享内存的应用程序是否可以访问彼此的代码?
- 使用 MATLAB 编码器将代码从注册估算器应用程序导出到C++
- 如何隐藏嵌入在 c++ 应用程序中的 python 代码
- 将32位和64位应用程序(具有相同代码)编译为一个EXE
- 是否有一种简单的方法可以从普通的 win32 C++代码向应用程序见解提供数据?
- 在计算机级别,应用程序以二进制方式运行,然后当发生运行时错误时,它如何呈现回错误代码
- 将C 代码编译到独立应用程序.App
- 如何在导致应用程序崩溃的代码中修复指令
- 如何将我在VC++9中开发的带有CLR支持静态库的C++/CLI(托管)链接到我在VC++6.0中的本机代码(应用程序)
- 调试混合代码应用程序中的启动问题