C++ 为什么我的代码没有完成Sound::release()调用?
我正在创建一个简单的MP3播放器,并使用FMOD核心API来管理音频。我已经写了一个简单的程序来测试播放功能。 我有两个函数freeSound和freeSystem分别释放声音和系统句柄。这两个函数都是通过析构函数中的函数cleanUp调用的 我已经使用gdb发现,由于某种原因,当调用析构函数时,我的程序在freeSound中的Sound::release调用中卡住了 只有在freeSound之前调用freeSystem时,才会出现此问题。简单地调用后者首先解决了这个问题 我已经分享了尽可能少的代码来显示这个问题。如果需要更多/更少,我将添加/删除 主要功能: int main { 音乐播放器p{music.mp3}; 标准::coutFMOD参考应解释以下行为: 关闭将使使用此系统创建的对象无效。请确保在调用此之前释放了所有声音、通道组、几何体和DSP对象C++ 为什么我的代码没有完成Sound::release()调用?,c++,mp3,fmod,C++,Mp3,Fmod,我正在创建一个简单的MP3播放器,并使用FMOD核心API来管理音频。我已经写了一个简单的程序来测试播放功能。 我有两个函数freeSound和freeSystem分别释放声音和系统句柄。这两个函数都是通过析构函数中的函数cleanUp调用的 我已经使用gdb发现,由于某种原因,当调用析构函数时,我的程序在freeSound中的Sound::release调用中卡住了 只有在freeSound之前调用freeSystem时,才会出现此问题。简单地调用后者首先解决了这个问题 我已经分享了尽可能少的
系统::在组件出现问题之前释放系统时,so会调用close。正如您发现自己只需在释放系统之前释放所有内容即可。谢谢!事实证明,我可以通过播放声音、调用cin.get并以错误的顺序释放资源,在测试程序中重现问题。