神秘的 OpenGL/SDL 内存增长

Posted

技术标签:

【中文标题】神秘的 OpenGL/SDL 内存增长【英文标题】:Mystery OpenGL/SDL memory growth 【发布时间】:2010-03-20 17:52:27 【问题描述】:

这是我使用 C++ 开发的第一个“游戏”,将 OpenGL 用于图形,将 SDL 用于应用程序。我的代码似乎可以工作,因为我能够创建一个功能性应用程序窗口并使用 Devil Texture 库完全加载和绘制纹理。问题出现在运行时。根据 Windows 任务管理器,我的内存使用量从 13,900 左右开始,但在 4 分钟左右后稳步增长到 15,000 左右,然后停止。这是正常的吗? Windows 任务管理器是不是查看内存的方式不准确?

【问题讨论】:

【参考方案1】:

您的代码中可能存在一些内存泄漏,即未释放的指针……等等……

在 Linux 上,我会使用 Valgrind 在运行时检查这一点。我不确定 Windows 的等价物是什么。这个post 应该为您指明寻找等效工具的正确方向

干杯

【讨论】:

【参考方案2】:

如果您在应用执行期间进行动态内存分配和解除分配,则可能是您正在对内存进行碎片化,并且只需要处理碎片周围的所有“slop”即可。

我之前使用过 http://www.fluidstudios.com/ 的 MMGR 包来跟踪我的内存使用情况。基本上,它允许您转储有关程序中所有分配的重要信息,因此您可以逐帧跟踪以查看发生了什么。

祝你好运。

【讨论】:

以上是关于神秘的 OpenGL/SDL 内存增长的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL / SDL2:模板缓冲区位在 PC 上始终为 0

OpenGL + SDL 有时会从坐标中提取

C++ OpenGL/SDL 2.0 无法加载纹理

C++ OpenGL SDL 屏幕问题

在 openGL + SDL 2.0 中绘制四面体

我的 C++ OpenGL SDL 程序没有按预期工作