我正在写一个声音管理器,用于声音播放。游戏中的每个实体都存储为共享指针的向量,每个实体都有一个私有声音对象。当每个对象被单独定义而不是放在向量内时,它可以完美地工作。但是,当它放在矢量中时,看起来它们没有被正确销毁,导致退出时崩溃。 我还使用一个set(声音类的静态成员)来跟踪加载声音的openal返回的源id。
loaded sounds/boundary.ogg. There are 1 sources.
loaded sounds/player.ogg. There are 2 sources.
// at this point, the application plays these sounds properly.
// on app exit:
destroying sounds/boundary.ogg // deletes the source id for this, should be 1 sources left
there are 0 sources // set is now empty, maybe it got corrupted somehow?
程序崩溃了。调试器说xtree中的这一行引起了崩溃:
while (!this->_Isnil(_Pnode))
如果对象不在矢量中,则上述工作没有问题。我也尝试使用向量而不是设置来存储源,但是我得到一个错误,表明向量已损坏。谁知道发生了什么?