我想在C++中使用FMOD播放很多简短的音频文件(mp3)。
在我的程序中,是这样的:

FMOD::System *fmodSystem;
FMOD::Channel *channel;
FMOD::System_Create(&fmodSystem);

fmodSystem->init(100, FMOD_INIT_NORMAL, 0);

while(true)
{
    FMOD::Sound *sound;
    fmodSystem->createSound("random filename.mp3", FMOD_DEFAULT, FMOD_DEFAULT, &sound);
    fmodSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
    fmodSystem->update();
    Sleep(100);
}

对于每种新声音,我都会看到可用内存的减少。这似乎很正常,因为我从未释放过FMOD:Sound对象。
我无法释放这些对象,因为fmodSystem-> playSound方法是异步的。

那么我该如何解决这个内存问题呢?

最佳答案

我还没弄清楚在播放完声音后如何释放声音,但是我开始将所有声音缓存在FMOD::Sound数组中。

FMOD::Sound *sounds[84];

现在,我的应用程序消耗了大约100 MB的RAM,但没有增加。

关于c++ - FMOD内存泄漏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20599809/

10-14 09:37