Утечка памяти FMOD

У меня есть много коротких аудиофайлов (mp3), которые я хочу играть с FMOD на c ++.
В моей программе есть что-то вроде этого:

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: Звуковые объекты.
Я не могу освободить эти объекты, потому что метод fmodSystem-> playSound является асинхронным.

Так как я могу решить эту проблему с памятью?

3

Решение

Я не понял, как издавать звуки после того, как они закончили играть, но я начал кэшировать все звуки в массиве FMOD::Sound,

FMOD::Sound *sounds[84];

Теперь мое приложение потребляет около 100 МБ ОЗУ, но увеличение не происходит.

0

Другие решения

FMOD::Sound *sound = 0;
bool Playing = false;

while(true)
{
if(channel)channel->isPlaying(&Playing);

if(!Playing)
{
if(sound)sound->release();
fmodSystem->createSound("random filename.mp3", FMOD_DEFAULT, FMOD_DEFAULT, &sound);
fmodSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
}
fmodSystem->update();
Sleep(100);
}
0

По вопросам рекламы [email protected]