我有一个问题,我在代码中保存PNG图片1,保存后会占用1倍图片的内存。然后我加载PNG图片2,加载后会占用两倍图片的内存,直到加载完毕才会释放这两倍内存。我执行了m_image = QImage();来释放m_image的内存,但好像m_image的内存没有及时释放。
以下是保存PNG图片1的代码:
<void saveimage()>//保存PNG图片1
{
QImageWriter writer(imgPath, "png");//保存已存在图片1
if (!writer.write(m_image))
{
QString msg = QString("write image %1 failed ").arg(m_imgPath) + writer.errorString();
QLOG_ERROR() << msg;
qDebug() << msg;
}
}</void>
以下是加载PNG图片2的代码:
<void loadimage()>//加载PNG图片2
{
saveimage();
QImageReader reader;
if (IsFileExist(imagePath))//如果图片2存在则加载图片2
{
m_image = QImage();//释放m_image的内存
reader.setFileName(imagePath);
reader.setDecideFormatFromContent(true);
if(reader.canRead())
{
if(reader.read(&m_image))
{
qDebug() << "Read successfully";
}
}
}
}</void>
m_image = QImage(); 这个没看出是释放m_image的内存。只要不再使用 m_image,垃圾回收器在需要的时候会回收它的内存。