如何释放内存从QByteArray和QByte流在QT

How to release memory from QByteArray and QByte Stream in QT

本文关键字:QByteArray QByte 流在 QT 内存 何释放 释放      更新时间:2023-10-16

我想知道如何从QT中释放QByteArray和QByteStream,特别是在这个代码片段:

  QByteArray DicResourceByteArray;
  QDataStream out(&DicResourceByteArray, QIODevice::WriteOnly);
  QString encoded;
  out.writeRawData(DicBlock.data + pos, DicBlock.length - pos);

  encoded = QString(DicResourceByteArray.toBase64());

根据RAII概念,一旦超出范围,所有将自动释放。如果你想显式地释放内存,调用clear()之类的东西,但这是不必要的——所有的清理都将在QByteArray的析构函数中完成。与QDataStream的情况是一样的…还要注意,这是非常可取的编码风格——当您创建自己的类时,请尝试这样做。

当对象超出作用域时,QByteArray所占用的内存将自动释放。QDataStream只是一种访问QByteArray的方式,所以它没有自己的数据(它可以使用一些缓冲区用于内部目的,但你不必管理它们)您可以使用clear()来清除QByteArray内容。您还可以使用reserve()和resize()来调优内存使用,但大多数情况下不需要它们。