【发布时间】:2013-11-22 12:49:22
【问题描述】:
因此,当我运行应用程序时,在 biginning 中,一切都运行得很顺利,但运行得越多,运行速度就越慢。我查看了它正在使用的内存,当它达到 400 mb 时,它会完全停止 30 秒,然后回落到 200。
我对 SDL2 很陌生,我认为这是因为我调用的每一帧:
optionsTS = TTF_RenderText_Blended(font, "Options.", blanc);
optionsT = SDL_CreateTextureFromSurface(renderer, optionsTS);
例如,我有很多。
问题是我不知道如何正确删除每一帧的对象,因为如果我执行 SDL_FreeSurface 会出错。
我不会发布我的整个代码,因为它是一团糟,但如果你想要它,请随时询问。
你知道如何解决这个问题吗?
【问题讨论】:
-
嗨,我会从每个帧中删除 optionsTS 和 optionsT 并将其作为变量传递,这样它只会创建一次,而不是每个帧。然后,您可以在需要它的每个帧中将其作为参数传递。一般来说,尽量不要在渲染循环中创建任何对象,这样会很快变得又大又乱。
-
好的,谢谢,我看看有没有帮助
-
谢谢!!!成功了!!!
-
嗨:)我已将评论变成答案,这样它就可以被接受;)
标签: c++ c memory-leaks sdl sdl-2