Получение EXC_BAD_ACCESS с SDL_Event * в C ++ - PullRequest
0 голосов
/ 14 марта 2011

Я прочитал много (МНОГИЕ!) EXC_BAD_ACCESS примеров, но, похоже, ни одно из предложенных решений не работает для решения моей проблемы.По сути, у меня есть геймплей, который выглядит следующим образом:

int GameEngine::Run()
{

    if( this->OnInit() == false )
        return -1;

    SDL_Event Event;

    while( this->IsRunning )
    {

        while( SDL_PollEvent( &Event ) )
        {

            INPUT->Event( &Event );
            for( int i = 0; i < this->objects.size(); i++ )
            {

                this->objects[i]->OnEvent();

            }

            if( INPUT->Type( SDL_QUIT ) )
               this->Stop();

        }

        this->OnLoop();
        this->OnRender();

    }

    this->OnCleanUp();

    this->PrintObjects();

    return 0;

}

Скорее всего, проблема вызывает

INPUT->Event( &Event );

.Эта функция выглядит следующим образом в классе Input:

void Input::Event( SDL_Event* CurrEvent ) { this->Current_Event = CurrEvent; }

() Это также строка, которая дает мне EXC_BAD_ACCESS)

Итак this->Current_Event во входном классе всегда будет содержаться текущее событие, так как оно будет обновлено из цикла игры с событием, которое было самым последним для опроса.

В настоящее время я не знаю, как получить трассировку стека в Xcode, ноесли я выполняю какую-либо ручную трассировку, она выглядит следующим образом:

Input::Event()
GameEngine::Run()
main()

А затем она переходит в код SDL.

Кто-нибудь знает, в чем может быть проблема?Скажи мне, если тебе нужно знать что-то еще!

1 Ответ

0 голосов
/ 01 июня 2016

EXC_BAD_ACCESS говорит о том, что вы сделали что-то, из-за чего указатель (ваш, внутренний для вашего устройства или тот, который использует распределитель) был разыменован, и эта область памяти не находится внутри одного из назначенных кусковв вашу программу.

с SDL_Event* здесь, она повышается, потому что INPUT не инициализируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...