如何释放内存从QByteArray和QByte流在QT
How to release memory from QByteArray and QByte Stream in QT
我想知道如何从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()来调优内存使用,但大多数情况下不需要它们。
相关文章:
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 将字符数组复制到 QByte 数组中,而无需传递指针
- 将包含二进制数据的 QByteArray 传递到按值运行
- 如何将QByteArray转换为std::istream或std::ifstream?
- 为什么QByteArray的大小是"int"而不是"无符号int"
- 将 QByteArray 转换为无符号短:不符合预期
- 如何将由一系列十六进制值表示的枚举附加到 QByteArray?
- 如何使用 QByteArray 而不是 SNDFILE
- 如何在不复制的情况下操作 QByteArray 对象?
- 如何将小端格式的QByteArray转换为无符号长整型
- QByteArray 通过队列连接按值发出并连接并附加到竞争条件?
- 如何从 std::optional 中获取 QByteArray<QByteArray>,并在没有其他 malloc 的情况下保留 std::nullopt?
- 有没有办法"QByteArray"变量数据直接放入变量"int"而无需强制转换?
- QString& QString::operator=(const QByteArray&)' is private
- 如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
- 如何从存储在 QByteArray 中的十六进制值计算校验和
- Problems with QByteArray::right
- 使用 QString 和 QByteArray 的 QDataStream 问题
- 如何释放内存从QByteArray和QByte流在QT