SDL事件内存泄漏

3

有没有在SDL中已知会导致内存泄漏的方法或函数?

我注意到我的程序随着时间的推移,内存使用量增加了0.1 MB(即额外的“0.4 MB”在3分钟内精确添加)。

我注释掉了所有的表面绘制/复制功能;基本上只将主游戏循环隔离到事件结构和屏幕翻转,例如:

// .. 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

我不知道SDL中是否存在任何泄漏。很有可能是在你的代码中。你应该继续剥离程序,直到泄漏消失,或者你可以在问题中发布整个泄漏代码。 - rodrigo
2个回答

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

1

我最喜欢用来检查内存泄漏的工具是 Valgrind。 在编译你的代码后,只需运行以下命令:

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

完成后,请检查内存泄漏信息的输出。 通过发出-v标志,该工具可以更详细。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接