2011-11-13 43 views
2

SDL中是否存在已知會導致內存泄漏的已知方法或函數?SDL事件內存泄漏

我注意到我的程序,當時,0.1 MB的內存不斷加入程序的內存使用情況(即在3分鐘內增加了一個額外的'.4 MB')。

我註釋了所有的表面繪圖/ bliting函數;非常簡單,只是孤立的遊戲主循環的事件結構和屏幕翻轉,例如:

// .. Intilize 
char quit = 0; 
Uint8* keystate = NULL; 
SDL_Event hEvent; 
while (!quit) 
{ 
    // .. Code 

    while (SDL_PollEvents(&hVvent)) { 
     keystate = SDL_GetKeystate(NULL); 
     // .. Event processing 
    } 

    // .. More Code 

    if (SDL_Flip(screen) == -1) 
     return 1 

    SDL_Delay(1); 
} 
// .. Cleanup 
+0

我不知道任何SDL泄漏。機會在於你的代碼。你應該繼續剝離你的程序,直到泄漏消失或者你可以在問題中發佈整個泄漏代碼。 – rodrigo

回答

1

我最喜歡的工具來檢查內存泄漏是Valgrind。 編譯代碼後,只需運行以下命令:

valgrind --leak-check=full --show-reachable=yes ./executable 

完成後,檢查內存泄漏信息的輸出。 該工具可以更詳細,通過發出-v標誌

1
valgrind --track-origins=yes --leak-check=full --show-reachable=yes ./executable