я написал некоторые данные в файл следующим образом:Считывание данных из файла занимает намного больше памяти, чем размер файла
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;
}
Файл кончался с равным 484MB. После этого я прочитал в цикле:
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();
}
Хотя это прочитал цикл выполняется я вижу, что в диспетчере задач моя программа начинает принимать около 1300MB памяти и после этого я получаю «В текстовом файле \ qharfbuzzng .cpp, строка 626: Ошибка в памяти ". Мой вопрос: нормально ли, что программа начнет принимать более 2-х размеров файловой памяти, и я должен прочитать ее в кусках, или я делаю что-то неправильно?
Спасибо за ваше объяснение! Я постараюсь найти workarond =) – pr0r1der
Резервирование не помогает в любом случае грустно. – pr0r1der
В этом случае ваши варианты: конвертировать в 64 бит; читать в кусках. –