J'ai écrit des données dans un fichier de la manière suivante:Les données lues à partir du fichier prend beaucoup plus de mémoire que la taille du fichier
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;
}
Le fichier a fini avec l'égal à 484MB. Après que je l'ai lu dans une boucle:
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();
}
Bien que cette lecture en boucle est en cours d'exécution, je vois que dans le gestionnaire de tâches de mon programme commence à prendre à propos de 1300 Mo chacune de la mémoire et après que je reçois un « dans le texte fichier \ qharfbuzzng .cpp, ligne 626: Erreur de mémoire insuffisante. Ma question est: Est-il normal que le programme commence à prendre plus de 2 fois la taille de la mémoire de fichier et que je devrais le lire en morceaux ou est-ce que je fais quelque chose de mal?
Merci pour votre explication! Je vais essayer de trouver un workarond =) – pr0r1der
La réservation n'aide pas tristement. – pr0r1der
Dans ce cas, vous avez le choix entre: convertir en 64 bits; lire en morceaux. –