2016-10-04 94 views
0

我正在制作一款shoot'em游戏,并且已经进入一个问题,在一段时间和连续拍摄后,这些精灵将无法加载。在我的控制台,一个错误打印出:C++/SDL2 IMG_Load错误(内存不足)

“IMG_LOAD_ERROR:内存不足”(简称“IMG_LOAD_ERROR:”是我自己的事)

我也用文本(SDL_ttf)显示的弹药数量。

我现在的假设是,我总是在生成的每个敌人的构造函数中调用IMG_load函数,但我甚至不确定是否这是造成它的原因。我能想到的还有更多的可能性。

此外,当它们被破坏时(当敌人身体不健康或离开屏幕时),我释放它们的纹理。

有人可以帮助我理解这一点并帮助我解决它吗?

+1

我很惊讶你承认你没有提供代码,但仍然不提供代码。你是否意识到我们要求你的代码找出它有什么问题? – sokkyoku

+0

它发生在同一张单独的图像上还是在程序运行后的某个时间发生?如果后者,你可能没有释放你之前分配的内存(请参阅@Novros答案)。如果valgrind可以在你的操作系统上运行,那么找到这种错误可能是最简单的工具。如果没有 - 专门设计用于查找泄漏的备选方案,但它们可能不像valgrind那样冗长和直接。看到源代码会很好,但如果你知道并且仍然没有发布代码 - 我怀疑这个问题可能太大了。 – keltar

回答

1

看来你并没有破坏你不需要的纹理/图像或渲染。

SDL_DestroyTexture(img); SDL_DestroyRenderer(renderer);

绘制图像的简单示例,我找到了https://gist.github.com/armornick/3434362

我的建议:您应该加载所有纹理或开始应用程序或需要时,但它必须是一次。您必须重复使用每个相同的图像

很高兴看到代码来找出代码出了什么问题。

+0

对不起,我忘记提及我在释放敌人的析构函数中释放内存。* facepalm *对不起:|。 – NJSADFNSDFNSFDN