为什么我的程序在运行时使用的内存不断增长?
why does the memory my program uses keep growing as it runs?
从第一次搜索我发现一些消息来源说我可能有内存泄漏。但是当我搜索到内存泄漏的详细信息时,它说当我使用"new"而不使用"delete"时发生,但是我没有在整个程序中使用new,所以我假设这意味着问题是别的东西。我没有任何正在增长的数组或者任何我能想到的会导致这个的东西。在程序初始化之后,我想象它不会再改变,但是它在增长,而且我可能很快就会增加。
程序非常大,所以我认为粘贴在这里不是一个好主意。也许只是一些可能导致这种情况的一般想法,可以帮助我知道去哪里找。
给大家一个概念,这个应用是一个2d的侧边滚轮,就像超级马里奥世界
由于您使用SDL
,我怀疑分配来自IMG_Load
或SDL_LoadWave
等调用中的SDL
。作为一个经验法则,当一个API给你一个指针,这意味着你必须要求API释放它。
以SDL_Surface
为例,调用IMG_Load
(或任何其他API函数来分配图像)将分配内存。您需要在每个SDL_Surface
上手动调用SDL_FreeSurface
,以便在使用它们时释放内存。
这与SDL
中的其他资源是一样的。
我看到你有SDL作为你的标签之一,所以我假设这款2D游戏正在使用该库。
如果是这种情况,则很有可能使用库的某个特性可以动态分配内存。
如果你正在为Mac OS X开发,你可以使用Xcode捆绑的免费工具Instruments;这有一个模板用于识别内存泄漏。
如果你正在为Windows开发程序,有很多工具可供你使用,其中之一是英特尔的Parallel Studio,它内置了内存分析工具,尽管它不是免费的。
观察内存使用情况的另一个选择可能是使用跨平台的Google c++测试框架。这个框架将允许您测试部分代码,以便您可以看到对SDL的哪些调用导致内存快速增长。
- 多线程应用中的流程尺寸不断增长
- ActiveMQ使用者的内存使用量在onMessage调用后不断增加
- 实时从不断增长的文本文件C 读取
- 为什么VS2015 MFC中的相同内存泄漏导致内存分配编号不断更改
- 在分配大型阵列期间内存增长
- 如果没有重复,则可以有效地将整数插入到不断增长的数组中
- 为什么我在一段时间后不断出现MySQL客户端内存不足错误.
- 当使用动态数组时,循环中的内存使用量不断增加.(C++)
- 如何在C++中读取不断增长的文本文件
- SDL系统内存在我的游戏中增长得非常非常快
- 随着C++程序的运行,内存使用量不断增加
- 如何检查我的 c++ 程序在内存中增长的状态
- 使用 std::move 重新分配内存的好处,而不是在矢量增长时复制
- 如何管理不断增长的C++项目
- QToolBar儿童名单一直在增长.Qt 内存泄漏
- 记忆不断增长
- 函数读取进程内存不断返回ERROR_PARTIAL_COPY
- concurrent_queue内存消耗爆炸式增长,然后程序崩溃
- 为什么我的程序在运行时使用的内存不断增长?
- 为什么保留的虚拟内存会增长,而当前正在使用的虚拟内存不会增长?