次の方法でいくつかのデータをファイルに書き込みました。
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 のメモリを消費し始め、その後、「In file text\qharfbuzzng.cpp, line 626: Out of memory」というエラーが表示されます。私の質問は次のとおりです。プログラムが 2 倍以上のサイズのファイル メモリを使用し始め、それをチャンクで読み取る必要があるのは正常ですか、それとも何か間違っていますか?