Ошибка SDL при создании windows?

#include #include #include bool init(char *title, int width, int height); void close(); SDL_Window *window = NULL; SDL_Surface *screen = NULL; bool init(char *title, int width, int height){ bool success = true; // SDL_Init 0 on success and returns negative on failure if( SDL_Init(SDL_INIT_EVERYTHING) != 0 ){ SDL_Log("Couldn't initialize SDL: %s",SDL_GetError()); success = false; } // creating Window and Surface window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_SHOWN ); // SDL_CreateWindow returns window on creation and NULL on failure if ( !window ){ SDL_Log("Couldn't create window: %s",SDL_GetError()); success = false; } else { // get window surface screen = SDL_GetWindowSurface( window ); if ( screen == NULL ){ SDL_Log("Couldn't get window surface: %s",SDL_GetError()); success = false; } } return success; } void close(){ // deallocate surface SDL_FreeSurface( screen ); // destroy window SDL_DestroyWindow( window ); // SDL_Quit(); SDL_Quit(); } int main(){ bool running = true; SDL_Event event; if( init("My Window", 800, 600) ){ printf("Congrats\n"); } else { printf("Sorry :(\n"); } while( running ) { // start = SDL_GetTicks(); while ( SDL_PollEvent( &event ) ){ switch( event.type ){ case SDL_QUIT: running = false; break; } SDL_UpdateWindowSurface( window ); } } close(); } 

Я попытался создать отдельную функцию для инициализации windows SDL, а затем попытался прикрепить к ней поверхность, но он дал Segmentation fault (core dumped) . и иногда он дает сообщение об ошибке Info: invalid window тоже.

Если я не создаю отдельную функцию и не запускаю этот код только в основной функции, это работает!