Qt:如何从内存中清理一个QImage

Gam*_*ads 2 qt qimage qml qtquick2 qtquickcontrols2

如何清除或清理QIMage

我的以下方法获取对的常量引用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? 
}
Run Code Online (Sandbox Code Playgroud)

问题:使用后
如何QImage从内存中清除对象?

注意:
请注意,它是一个const & QImage。因此,答案将涉及将其QImage转换为非const吗?另外,我正在尝试获取QImageData指向数据的指针并将其删除。不知道这是否是正确的方法。提出建议。

use*_*108 5

您需要一个非常量引用或指针。使用指针,答案显而易见。通过引用,您只需为其分配默认构造QImage即可。

MyMethod(QImage & img) {
  img.save("/path/to/save/the/qimage");

  img = QImage();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果还有其他QImage实例引用同一张图像,这可能仍无法清除该图像占用的内存。为了克服这一障碍,您需要避免多个QImage实例引用同一张图像。甲Qimage实例是像在这方面的一个共享指针。

const-cast将被视为揭示您的情况下的设计缺陷。我建议反对。