c++异常访问冲突与int变量

标签 c++ exception access-violation

我有一个非常奇怪的错误。我得到了一个int类型的对象属性,叫做currentState

这是声明

class WorkerAgent : public BaseAgent {

private:
    int currentState;

下面的代码在游戏循环中运行了很多次,但有时(随机时间)代码会在 (270) 行运行程序

*OBS: currentState 在运行这行代码时已经初始化 (270)!

if (currentState == REPAIRING) {

    if (!unit->isRepairing()) {

        setState(GATHER_MINERALS);
        BaseAgent* base = AgentManager::getInstance()->getClosestBase(unit->getTilePosition());

        if (base != NULL) {

            unit->rightClick(base->getUnit());
            return;
        }
    } else {

        return;
    }
}

int cur = currentState; // (line 270) 
bool b = cur == FIND_BUILDSPOT; 

我有一个 EXCEPTION_ACCESS_VIOLATION 并且程序崩溃了。我不知道会发生什么,因为 currentState 不是指针,也不是 cur

错误

VERSION: 1.16.1.1
BWAPI:
  REVISION: 4160
  BUILD: RELEASE
  ERROR: None
  LOCATION: Single Player 
MAP: Stepping Stones
     (3)Stepping Stones.scm

EXCEPTION: 0xC0000005    EXCEPTION_ACCESS_VIOLATION
FAULT:     0x10044217    BWAPI.dll
REGISTERS:
  EDI: 00000140
  ESI: 00000003
  EBX: 00000000
  EDX: C208C483
  ECX: 5B46A60C
  EAX: 035F0001
  EBP: 0018EEE8
  EIP: 10044217
  ESP: 0018E4C4
STACK:
  BWAPI.dll         0x10044217      ----
  BWAPI.dll         0x10046C38      ----
  BWAPI.dll         0x10047A43      ----
  BWAPI.dll         0x100408C6      ----
  DUMB.DLL          0x5B4254A0    WorkerAgent::computeActions
    d:\programming\mestrado\bots\dumb\bthaimodule\source\workeragent.cpp:270

关于本案的任何其他信息,请问我!我快被这个问题搞疯了!

最佳答案

currentState 是您的类 WorkerAgent 的成员,这意味着您必须为 currentState 提供类型为 WorkerAgent 的有效对象 存在。

您可能在未向我们展示的代码中使用了指向 WorkerAgent 的无效(空、未初始化、已删除或其他垃圾)指针。

关于c++异常访问冲突与int变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667043/

相关文章:

python - 在 Python 中实现延迟异常

c++ - Visual C++ 非托管代码 : Use/EHa or/EHsc for C++ exceptions?

C++ 将类型名/数据类型名/类名传递给线程构造函数的奇怪案例

C++ 模板变量和参数包扩展

C++/VS2008 : Performance of Macros vs. 内联函数

r - 在R中,如何创建错误对象?以后如何在上面抛出错误?

c++ - 等待状态改变的方法应该是 const 吗?

javascript - 为什么抛出异常后就不再认为发生了?

multithreading - 在多线程函数中声明后不久释放指针

c++ - 卸载时XAudio2访问冲突异常