gpt4 book ai didi

C++ 应用程序的行为不同于代码

转载 作者:行者123 更新时间:2023-11-28 00:01:49 24 4
gpt4 key购买 nike

我正在使用 MS Visual Studio 2010 用 C++ 编写游戏。该游戏几乎处于测试阶段,但我在这里面临一个严重的问题,希望有人能够提供帮助。

因此,如果我从 VS 运行游戏(例如使用 F5 键)一切正常。但是,一旦我在游戏中的某些点运行同一游戏的新编译的 .exe 文件,我就会崩溃,并且会发生其他一些奇怪的事情。我可以做些什么来修复它吗? VS 中是否有特定设置?这真的让我感到困惑,如果有人知道解决方案,请提供帮助。

最佳答案

如果我没记错的话,F5 键用于开始调试,当在调试器中运行时,Visual Studio 会执行不在调试器中运行时不会发生的事情。

首先,调试器会为您清除所有内存,这意味着未初始化的变量变为零。此清除包括未初始化的指针变量被初始化为空指针。

如果您有未初始化的指针变量并对它们进行空指针检查,这些检查在调试器中运行时会正常工作,但当不在调试器中运行时,这些变量将具有不确定值,一个看似随机的值,很可能不是空指针。因此,当您在调试器之外运行时,那些非空指针将使您的程序认为这些指针有效,并且您将取消对它们的引用,这将导致未定义的行为

您需要做的是检查您的代码并查找未初始化的变量,尤其是指针,并确保它们在您使用它们之前已正确初始化。


与其他提到的一样,在与 Visual Studio 调试器不同的环境中运行或从 Visual Studio 启动程序时,还有许多其他问题可能会出错。提到的一个主要问题是相对文件路径可能不再正确。从不同目录的命令行运行时,或通过双击其图标运行时,程序的工作目录将与从 Visual Studio 启动时不同。拥有某种配置值来说明诸如游戏 Assets 和您需要的其他文件的基本目录之类的东西是一个好主意。然后您可以将进程当前工作目录更改为该目录,或者使用它来自行解析 Assets 的绝对路径。

关于C++ 应用程序的行为不同于代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38371583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com