Я использую Taglib и записываю обложку в mp3. Следующий код здесь работает:Удаление или умная ошибка указателя
bool MediaHelper::AddCoverArt(const QString &media, const QString &image_file)
{
TagLib::MPEG::File mpeg(media.toStdString().c_str());
TagLib::ID3v2::Tag *id3v2Tag = mpeg.ID3v2Tag(true);
TagLib::ID3v2::AttachedPictureFrame *frame = new TagLib::ID3v2::AttachedPictureFrame;
frame->setMimeType("image/jpeg");
frame->setPicture(image.data());
id3v2Tag->addFrame(frame);
mpeg.save();
delete frame;
return true;
}
, но как только я оставить функцию сбои приложения с нарушением доступа на чтение
Затем я попробовал с QScopedPointer:
bool MediaHelper::AddCoverArt(const QString &media, const QString &image_file)
{
TagLib::ID3v2::Tag *id3v2Tag = mpeg.ID3v2Tag(true);
QScopedPointer<TagLib::ID3v2::AttachedPictureFrame> frame(new TagLib::ID3v2::AttachedPictureFrame);
frame->setMimeType("image/jpeg");
frame->setPicture(image.data());
id3v2Tag->addFrame(frame.data());
mpeg.save();
return true;
}
Но то же самое происходит, когда Я оставляю функцию. Я немного тупой, потому что, если я не позабочусь об удалении фрейма, я создам для себя большую проблему. Если кто-нибудь может дать мне некоторое представление.
Спасибо, я посмотрел описание документов, но не функции. Спасибо, что расчистили меня за меня – adviner