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 将被视为揭示您案例中的设计缺陷。我建议不要这样做。
如何清除或清理 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 将被视为揭示您案例中的设计缺陷。我建议不要这样做。