我想在Qt5 C++中使用TagLib庫(1.11.1)製作音樂播放器。我打開了多個文件並閱讀標籤。我遇到了兩個困難。打開文件並閱讀標籤後,我無法關閉文件並釋放文件佔用的內存。我使用delete
來釋放內存並關閉文件。但是,當我嘗試這個程序崩潰。這裏是我的程序代碼剪斷:TagLib在破壞TagLib :: File時崩潰,無法關閉打開的TagLib :: File
QString audioPath("song.mp3")
auto file = new MPEG::File(audioPath.toStdWString().c_str());
if (file->isOpen()) {
auto tag = file->ID3v2Tag();
if (tag) {
//read audio tags
}
}
delete file;
當我刪除
delete file;
它的作品完美,但打開多個文件時存在內存泄露特殊。如果我打開一個文件,我無法再打開它,因爲沒有辦法在不退出程序的情況下關閉打開的文件。並給我留下了這個錯誤:
TagLib: Could not open file song.mp3
有沒有解決內存泄漏,關閉打開的文件的方法嗎?
當我運行調試,delete file;
我看到這條消息:
The inferior stopped because it received a signal from the operating system.
Signal name: SIGSEGV
Signal meaning: Segmentation fault
您可以在崩潰後給我們調試器輸出嗎? (堆棧溢出?訪問不良,堆腐蝕崩潰?) – Raxvan
對不起@Raxvan ...這是我第一次發佈一個問題。我已經添加了調試結果。 –