0

从第一次搜索这个我发现一些消息来源说我可能有内存泄漏。但是当我详细搜索内存泄漏是什么时,它说我在使用“new”而不使用“delete”时发生了但是我在整个程序中甚至没有使用过一次 new 所以我假设这意味着问题是别的. 我没有任何不断增长的数组或任何我能想到的会导致这种情况的东西。在程序初始化之后,我想它在那之后不会改变,但我会成长,而且我可能会很快添加。

该程序非常大,因此我认为将其全部粘贴在这里不是一个好主意。也许只是一些可能导致这种情况的事物的一般想法可以帮助我知道在哪里看。

只是给出一个想法,该应用程序是一个 2d 横向滚动条,就像超级马里奥世界

4

2 回答 2

1

由于您使用SDL,我怀疑分配来自SDLIMG_Loador之类的调用SDL_LoadWave。根据经验,当 API 为您提供指针时,这意味着您也必须要求 API 释放它。

举个SDL_Surface例子,调用IMG_Load(或任何其他用于分配图像的 API 函数)将分配内存。完成后,您将需要手动调用SDL_FreeSurface每个人SDL_Surface以释放内存。

中的所有其他资源都是一样的SDL

于 2013-04-17T23:24:02.287 回答
0

我看到您将 SDL 作为您的标签之一,所以我假设这个 2D 游戏正在使用该库。

如果是这种情况,那么库功能之一的使用很可能是动态分配内存。

如果您正在为 Mac OS X 开发,您可以使用与 Xcode 捆绑在一起的免费工具,称为 Instruments;这有一个用于识别内存泄漏的模板。

如果您正在为 Windows 进行开发,那么您可以使用许多工具,其中之一是 Intel 的 Parallel Studio,它内置了一个内存分析工具,尽管它不是免费的。

观察内存使用情况的另一种选择可能是使用跨平台的 Google C++ 测试框架。此框架将允许您测试部分代码,以便您可以看到对 SDL 的调用导致您的内存快速增长。

于 2013-04-17T14:25:41.020 回答