Я записал некоторые данные в файл следующим образом:
result = new QHash<QPair<int, int>, QVector<double> >;
QFile resfile("result.txt");
resfile.open(QIODevice::WriteOnly | QIODevice::Append);
QDataStream out(&resfile);
while(condition)
{
QString s=" something";
out<<s;
res->insert(QPair<int, int>(arange,trange),coeffs);
out<<res;
}
Файл получился равным 484 МБ. После этого я прочитал это в цикле:
QString s;
QVector<QHash<QPair<int, int>, QVector <double> > > thickeness_result;
QFile resfile("result.txt");
resfile.open(QIODevice::ReadOnly);
QDataStream out(&resfile);
while (!out.atEnd())
{
thickeness_result.resize(thickeness_result.size()+1);
out>>s>>thickness_result.last();
}
Пока выполняется этот цикл чтения, я вижу, что в диспетчере задач моя программа начинает занимать около 1300 МБ памяти, и после этого я получаю сообщение об ошибке «В файле text\qharfbuzzng.cpp, строка 626: нехватка памяти». Мой вопрос: это нормально, что программа начинает занимать больше, чем 2-кратный размер файловой памяти, и я должен читать ее кусками, или я делаю что-то не так?