【发布时间】:2019-01-21 09:11:32
【问题描述】:
如何释放 QByteArray 中 append() 分配的内存(重新)分配??
我在 C++ 头文件中定义了一个 QByteArray:
QByteArray buffer;
并在 cpp 文件中初始化如下:
Root:Root():
buffer(QByteArray())
{
}
Root:Append(const QByteArray &chunk)
{
buffer.append(chunk);
}
Root:Test()
{
// Make the number bigger if 3000 is not big enough for
// append() to trigger reallocate memory
for (int i = 0; i < 3000; i++){
Append("xxxxxxxxxxxxxx");
}
// Private Bytes and Working set get increased
buffer.clear();
// Private Bytes and Working set DOES NOT get decreased
// How to release the memory (re-)allocated by append()
// in QByteArray ??
}
【问题讨论】:
-
也许你必须在清除后打电话给
buffer.resize(0)? -
不,resize(0) 不会释放内存,类似于 buffer.clear() 只是清除缓冲区。
-
您能否编辑您的问题以显示您如何测量内存使用情况。
标签: qt qbytearray