Qt:如何从内存中清除QImage

时间:2017-09-18 09:11:06

标签: qt qml qtquick2 qimage qtquickcontrols2

如何清除或清理QIMage

以下方法获取对QIMage

的const引用
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? 
}

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

注意:
请注意,它是const & QImage。那么,答案会涉及将QImage转换为非const? 此外,我正在尝试获取指向数据的QImageData指针。删除它。不确定这是否是正确的方法。建议。

1 个答案:

答案 0 :(得分:4)

您需要非const引用或指针。使用指针,答案是显而易见的。使用引用,您只需为其分配一个默认构造的QImage

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

  img = QImage();
}

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

const-cast将被视为揭示您案件中的设计缺陷。我建议反对。