DirectXGame.exe中0x00B84CD6处的未处理异常:0xC0000005:访问冲突读取位置0x000000DC

时间:2014-02-22 23:21:20

标签: c++

C ++ DirectX11 visual studio 2012.我已将我的GKController1类声明为ref类。 我是C ++编程的新手,我没有编写大部分代码,所以我真的不明白为什么它会破坏。如果您需要更多代码,请询问。感谢。

以下是破解的代码:

Background.cpp文件

int GameBackGround::PlayingGame()
{
    if (this->controller1->IsPauseRequested()) //Breaks here, it doesn't even allow me to step into the method, it just breaks
    {
        //Game Paused
        return 3;
    }
}`

Background.h文件

GKController1^ controller1; 

//GKController1 file
bool GKController1::IsPauseRequested()
{
    if (gamepadConnected)
    {
        if (this->gamepadState.Gamepad.wButtons & XINPUT_GAMEPAD_BACK
            && !(this->previousGamepadState.Gamepad.wButtons & XINPUT_GAMEPAD_BACK))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return this->escKeyPressed;
    }
}

1 个答案:

答案 0 :(得分:0)

if (this->controller1->IsPauseRequested()) //Breaks here, it doesn't even allow me to step into the method, it just breaks

controller1几乎肯定是一个糟糕的指针。当您取消引用它(->IsPaurRequested())时,您会收到访问冲突,因为您正在读取您不拥有的内存。

你在哪里初始化它?我看到了声明,但你需要在某处初始化它。该成员与声明类的类型相同。为什么需要它?看起来你只是传递了所有内容,为什么不使用IsPauseRequested()this->IsPauseRequested())?