我正在用SDL2製作一款遊戲,並且在遊戲中不久就要花費太多RAM才能關閉。我剝離了代碼,發現即使這個毫無意義,一個文件程序使用我的CPU和一個RAM的演出。SDL_Renderer使用100%的CPU和一盤RAM不做任何事
#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和循環外,該程序沒有其他問題,但它佔用了我CPU的100%以及超過1 GB的RAM。再增加一點讓程序完全停下來。我在兩臺電腦上測試過它,一臺使用i7處理器。這個簡單的程序不應該有這種影響,我想知道它爲什麼這樣做。 – cp420