使用FmodEx時我遇到了一些問題。我已經通過網絡徹底搜索,看看是否有人有我的同樣的問題,但我沒有找到任何相關的問題。 我做了一個類,加載和播放我的聲音,在這種情況下,流。這裏是我的代碼:FMOD Ex內存分配問題
Audio::Audio()
{
//Create system object//
m_Result = FMOD::System_Create(&m_pSystem);
ErrorCheck(m_Result);
//Check FMOD version//
m_Result = m_pSystem->getVersion(&m_FmodVersion);
if(m_FmodVersion < FMOD_VERSION)
MessageBox(NULL, FMOD_ErrorString(m_Result), "FMOD Version Error", MB_OK);
//Check if hardware acceleration is disabled//
m_pSystem->getDriverCaps(0, &m_Caps, 0, &m_SpeakerMode);
if (m_Caps & FMOD_CAPS_HARDWARE_EMULATED)
MessageBox(NULL, FMOD_ErrorString(m_Result), "FMOD Acceleration Error", MB_OK);
//Initialize system object//
m_Result = m_pSystem->init(2, FMOD_INIT_NORMAL, 0);
ErrorCheck(m_Result);
m_pChannel = 0;
m_IsLoaded = false;
}
void Audio::LoadMusic(char *filename)
{
m_Result = m_pSystem->createStream(filename, FMOD_CREATESTREAM, 0, &m_pSound);
ErrorCheck(m_Result);
}
void Audio::Play()
{
SetPause(false);
m_Result = m_pSystem->playSound(FMOD_CHANNEL_FREE, m_pSound, false, &m_pChannel);
ErrorCheck(m_Result);
SetPause(true);
}
我只是這樣做後:
pAudio->LoadMusic("test.mp3");
pAudio->Play();
聲音播放沒有問題。加載流時會發生問題。使用的內存一直在增加,並且不會停止。我猜這是因爲它用來讀取mp3流的小緩衝區沒有被釋放,因此它尋找RAM中下一個可用內存塊,因此程序的內存使用量不會停止越來越多。 我認爲在每次播放後都可以使用「釋放」方法,但我注意到釋放釋放了聲音實例中的所有內存。
任何人都可以給我一些指針,我在做什麼錯在這裏?我如何防止這種情況? 我不確定我是否已經說清楚了。 在此先感謝您的幫助。