Comment effacer ou nettoyer une méthode Après QIMageQt: Comment nettoyer un QImage de la mémoire
de mes obtenir une référence const à un QIMage
.
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?
}
Question:
Comment dois-je nettoyer l'objet QImage
de la mémoire après utilisation?
Note:
Notez qu'il est un const & QImage
. Donc, réponse impliquerait de couler le QImage
en non-const? En outre, je cherche à obtenir un pointeur QImageData
aux données & le supprimer. Je ne sais pas si c'est la bonne approche ici. Ne suggérer.
Comprenez que 'const_cast' est déconseillé. MAIS, si je fais une const_cast comme ceci 'QImage copy = const_cast (img)' alors faites 'copy = QImage()'. ** Est-ce que cela va nettoyer 'img'? ** –
Si j'utilise un shared_ptr alors je n'aurais pas à me soucier du nettoyage? –
Le problème est que Qt utilise COW sur beaucoup de ses classes, comme QImage, QByteArray, ... Donc, quand vous copiez l'un de ceux-ci, vous créez simplement une nouvelle référence aux mêmes données. Vous devez vous assurer que toutes les références aux mêmes données (c'est-à-dire toutes les instances QImage référençant la même image) sont détruites pour libérer les données d'image référencées. – user1095108