Ich verwende eine QList, um die aus einer SQL-Tabelle gelesenen Daten zu speichern. Die Tabelle hat mehr als eine Million Datensätze. Ich muss sie in eine Liste bringen und dann auf der Liste etwas bearbeiten.QList stürzt ab, wenn die Größe groß ist
QList<QVariantMap> list;
QString selectNewDB = QString("SELECT * FROM newDatabase.M106SRData");
QSqlQuery selectNewDBQuery = QSqlDatabase::database("CurrentDBConn").exec(selectNewDB);
while (selectNewDBQuery.next())
{
QSqlRecord selectRec = selectNewDBQuery.record();
QVariantMap varMap;
QString key;
QVariant value;
for (int i=0; i < selectRec.count(); ++i)
{
key = selectRec.fieldName(i);
value = selectRec.value(i);
varMap.insert(key, value);
}
list << varMap;
}
Ich bekomme "qvector.h, Zeile 534: Nicht genügend Speicher" Fehler.
Das Programm stürzt ab, wenn die Liste die Größe < 1197762 Elemente> erreicht. Ich habe versucht, Reserve(), aber es hat nicht funktioniert. Ist QList auf eine bestimmte Größe beschränkt?
Ihr RAM ist auf eine bestimmte Größe begrenzt. – Kane
Können Sie sehen, ob der von Ihrem Programm verwendete Speicher den auf Ihrem Computer installierten Speicher übersteigt? – basslo
"QList stürzt ab ..." Nein, tat es nicht. Klassen können nicht abstürzen; Was abgestürzt ist, war die Anwendung. – MrEricSir