【发布时间】:2015-12-12 10:11:28
【问题描述】:
我已通过以下方式将一些数据写入文件:
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 的内存,然后我收到“在文件 text\qharfbuzzng.cpp,第 626 行:内存不足”错误。 我的问题是:程序开始占用 2 倍以上的文件内存是否正常,我应该分块读取它还是我做错了什么?
【问题讨论】:
标签: c++ qfile qvector qhash qdatastream