我想在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/