首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SDL2有没有内存泄漏?

SDL2有没有内存泄漏?
EN

Stack Overflow用户
提问于 2019-08-14 20:15:53
回答 1查看 686关注 0票数 0

我注意到我所有使用SDL2的项目都有内存泄漏,所以我写了一个小测试程序,看起来像这样:

代码语言:javascript
运行
复制
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *win = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 100, 100, SDL_WINDOW_RESIZABLE);
SDL_Renderer *ren = SDL_CreateRenderer(win, 0, 0);

bool running = true;
SDL_Event event;
while (running) {
    while(SDL_PollEvent(&event) != 0) {
        if(event.type == SDL_QUIT) {
            running = false;
        }
    }

    SDL_RenderClear(ren);
    SDL_RenderPresent(ren); //Thanks to keltar 
}
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
SDL_Quit();

我没有注意到任何可能在这里产生泄漏的东西。

我正在使用Xcode的Instruments来检测泄漏。前十秒没有泄漏。在接下来的10秒内,大约会产生15个泄漏。这将持续到程序启动后的40秒,强度较小。从40秒开始,不会产生新的泄漏,但分配的内存仍然会不断增加。编辑:当我使用SDL_RenderPresent时,内存不再增长。

那么,SDL2是否存在内存泄漏,是我在代码中犯了错误,还是仪器产生了一些误报?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 21:15:17

这可能是一些错误,你没有删除某个对象,或者你正在循环中重新创建它。SDL2本身不应该有任何内存泄漏。但是,我强烈建议您使用最新的版本(目前是2.0.10)。请尝试在您的演示程序中绘制一些东西,以验证这里没有任何内存泄漏。尝试重复项目代码的一小部分,以呈现类似的效果。这段代码什么也不做,也不能重现你的问题。但是,如果你发现这里是一个真正的内存泄漏的SDL2端,请提交一个报告在这里https://bugzilla.libsdl.org/。在此之前,请从官方Mercurial存储库https://hg.libsdl.org/SDL/中提取最新的源代码,并重试您的测试,以确认该错误仍然存在于主流中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57494515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档