我很困惑为什么系统监视器向我显示我的内存在线性增加,因为我在每一行中读取(进入同一个变量),同时将字符串的拆分存储在预分配的内存中。
// pre-allocate
int rows = 100000;
int columns = 300;
QVector<QString> matrix_row;
matrix_row.resize(rows);
QVector< QVector<QString> > matrix;
matrix.resize(num_columns);
qFill(matrix.begin(), matrix.end(), matrix_row);
int current_row = 0;
while(!filestream.atEnd())
{
QString line = filestream.readLine();
for (int i = 0; i < num_columns; i++)
{
matrix[i][current_row] = line.left(end[i]).right(grom[i]);
}
++current_row;
}
速度是一个问题,所以我想也许有问题。
初始分配后,它从大约 26% 开始,在我的 8gb 内存的大约 65% 处结束。
有什么问题?