Я делал игру с SDL2, и вскоре в игре было слишком много ОЗУ, чтобы даже закрыть. Я удалил код и обнаружил, что даже эта бессмысленная файловая программа использует 100% моего процессора и гигабайт ОЗУ.SDL_Renderer использует 100% процессор и гигабайт оперативной памяти ничего не делать
#include "SDL.h"
#include "SDL_image.h"
#include <cassert>
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
SDL_Renderer* gRenderer;
SDL_Window* gWindow;
void init();
void close();
int main()
{
init();
SDL_Event e;
bool quit;
while(!quit)
{
while(SDL_PollEvent(&e) != 0)
{
if(e.type == SDL_QUIT)
quit = true;
}
}
close();
}
void init()
{
assert(SDL_Init(SDL_INIT_EVERYTHING) >= 0);
gWindow = SDL_CreateWindow("Space", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH,
SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
assert(gWindow);
gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED);
assert(gRenderer);
int imgFlags = IMG_INIT_PNG;
assert(IMG_Init(imgFlags) & imgFlags);
SDL_SetRenderDrawColor(gRenderer, 0xFF, 0xFF, 0xFF, 0xFF);
}
void close()
{
SDL_DestroyRenderer(gRenderer);
SDL_DestroyWindow(gWindow);
IMG_Quit();
SDL_Quit();
}
Это рекомендуемый способ использования SDL. – cp420
Что именно происходит, чего вы не ожидаете? Не просто перечислите все, что вы наблюдаете: скажите, что вы ожидаете *, а потом спросите, почему это не так, как вы ожидаете. ** В вышеупомянутом «вопросе» нет вопроса ** – Yakk
Хорошо, эта программа буквально ничего не делает, кроме запуска SDL и цикла, но это занимает 100% моего процессора и более гигабайта оперативной памяти. Добавление немного больше к этому делает программу полностью остановленной. Я тестировал его на двух компьютерах, один с процессором i7. Эта простая программа не должна иметь такого влияния, и я хочу знать, почему это происходит. – cp420