我正在做一个小游戏,添加声音会很好......
但我泄漏了很多,即使我试图删除所有内容并在互联网上寻找信息......
这是我的代码:
#include "../../api/inc/fmod.hpp"
#include "../../api/inc/fmod_errors.h"
#include <iostream>
#include <string>
int main()
{
FMOD::System *system = NULL;
FMOD::System_Create(&system);
system->init(100, FMOD_INIT_NORMAL, 0);
FMOD::Channel *channel = NULL;
FMOD::Sound *sound = NULL;
while(true)
{
system->createSound("music.waw", FMOD_DEFAULT, FMOD_DEFAULT ,&sound);
FMOD_RESULT result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
system->update();
}
system->release();
system = NULL;
delete (system);
delete (sound);
delete (channel);
return (0);
}
我很担心,因为如果我玩足够长的游戏,我会完全填满我的记忆...... 我该怎么办? 我做错了什么?
答案 0 :(得分:0)
完成播放后需要释放声音:
system->createSound("music.waw", FMOD_DEFAULT, FMOD_DEFAULT ,&sound);
FMOD_RESULT result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
system->update();
sound->release();
如果你计划重复使用声音,你可以考虑只加载一次并保持记忆。
答案 1 :(得分:0)
这里有一些避免内存泄漏的建议
result = pitch_shift_DSP->release();// if you have DSP like me.
ERRCHECK(result);
result = sound->release();
ERRCHECK(result);
result = system->close();
ERRCHECK(result);
result = system->release();
ERRCHECK(result);