C++ SDL2程序使用事件崩溃

C++ SDL2程序使用事件崩溃,c++,input,sdl-2,C++,Input,Sdl 2,正如标题所说,我在处理SDL2中的事件时遇到了程序崩溃的问题 我处理这样的事件: const Uint8 *key_buttons; SDL_Event e; while (SDL_PollEvent(&e)) { switch(e.type) { case SDL_QUIT: running = false; break; case SDL_KEYDOWN: key_buttons = SDL_GetKeyboardSt

正如标题所说,我在处理SDL2中的事件时遇到了程序崩溃的问题

我处理这样的事件:

const Uint8 *key_buttons;

SDL_Event e;

while (SDL_PollEvent(&e))
{
  switch(e.type)
  {
    case SDL_QUIT:
      running = false;
      break;

    case SDL_KEYDOWN:
      key_buttons = SDL_GetKeyboardState(0);
      break;   

    case SDL_KEYUP:
      key_buttons = SDL_GetKeyboardState(0);
      break; 
  }
}
然后,当我调用这个函数时:

bool Get_KeyButtonState(SDL_Scancode key)
{
  if (!key_buttons)
    return false;

  if (key_buttons[key])
    return true;
  else
    return false;
}
我的程序崩溃了

如果我在while循环开始时调用
SDL\u GetKeyboardState()
,并停止使用
SDL\u KEYDOWN
SDL\u keydup
,则我的程序工作正常

因此,我的问题是:为什么会发生这种情况,正确的解决方案是什么?还有,有没有一种方法可以在不保存所有按钮以前的状态的情况下处理状态的更改(因为我找不到任何函数)


谢谢

我对SDL一无所知,但那个程序看起来很可疑。您有一个未初始化的指针,因此在未初始化的情况下访问
key\u按钮
是未定义的行为。这意味着您试图删除这两个鼠标案例会导致未定义的行为。其次,您如何保证
key\u按钮
至少有
key+1
条目?你只是假设它不需要测试就可以了?谢谢!你是对的,我忘了初始化按键,现在看来一切正常(邪恶的C++)。