Qt:如何从内存中清理 QImage

Qt: How to clean up a QImage from memory

如何清除或清理 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? 
}

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

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

您需要一个非常量引用或指针。有了指针,答案就很明显了。使用引用,您只需为其分配一个默认构造的 QImage

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

  img = QImage();
}

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

const-cast 将被视为揭示您案例中的设计缺陷。我建议不要这样做。