Ich benutze Taglib und schreibe das Cover zum mp3. Der folgende Code funktioniert hier:Delete oder Smart Pointer Fehler
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;
}
aber sobald ich die Funktion, die App stürzt mit Lesezugriffsverletzung verlassen
Ich habe dann versucht es mit einem 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;
}
Aber gleiche passiert, wenn Ich verlasse die Funktion. Ich bin ein bisschen ratlos, denn wenn ich mich nicht darum kümmere Frame zu löschen, werde ich ein großes Problem für mich selbst schaffen. Wenn mir jemand Einblick geben kann.
Danke Ich schaute auf die Beschreibung der Dokumentation, aber nicht die Funktionen. Danke, dass du es für mich aufgeräumt hast – adviner