Wie ein QIMageQt: Wie ein QImage aus dem Speicher aufzuräumen
Nach Methode von mir erhalten eine konstante Referenz zu löschen oder zu einem QIMage
aufzuräumen.
MyMethod(const QImage & img) {
// save it to a file
img.save("/path/to/save/the/qimage");
// now I want to clan up img from memory. How should I do it?
}
Frage:
Wie soll ich das QImage
Objekt aus dem Speicher nach dem Gebrauch reinigen?
Hinweis:
Beachten Sie, dass es sich um eine const & QImage
ist. Also würde die Antwort beinhalten, die QImage
in nicht-const zu werfen? Auch ich versuche zu versuchen, einen QImageData
Zeiger auf die Daten & löschen Sie es. Nicht sicher, ob das hier der richtige Ansatz ist. Schlage vor.
Verstehen Sie, dass 'const_cast' wird abgeraten. ABER, wenn ich einen const_cast wie folgt mache: QImage copy = const_cast (img) 'dann kopiere = QImage()'. ** Wird das "img" aufräumen? ** –
Wenn ich ein shared_ptr benutze, müsste ich mir keine Gedanken über die Aufräumarbeiten machen? –
Das Problem ist, dass Qt COW für viele seiner Klassen verwendet, wie QImage, QByteArray, ... Also, wenn Sie eine davon kopieren, erstellen Sie einfach eine neue Referenz auf die gleichen Daten. Sie müssen sicherstellen, dass alle Verweise auf dieselben Daten (d. H. Alle QImage-Instanzen, die auf dasselbe Bild verweisen) zerstört werden, um die referenzierten Bilddaten freizugeben. – user1095108