矢量析构函数的共享ptrs矢量的问题

时间:2015-05-13 09:24:44

标签: c++ audio vector set openal

我正在写一个声音管理器,用于声音播放。游戏中的每个实体都存储为共享指针的向量,每个实体都有一个私有声音对象。当每个对象被单独定义而不是放在向量内时,它可以完美地工作。但是,当它放在矢量中时,看起来它们没有被正确销毁,导致退出时崩溃。 我还使用一个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))

如果对象不在矢量中,则上述工作没有问题。我也尝试使用向量而不是设置来存储源,但是我得到一个错误,表明向量已损坏。谁知道发生了什么?

0 个答案:

没有答案