SQLテーブルから読み取ったデータを格納するためにQListを使用しています。テーブルには100万を超えるレコードがあります。私はそれらをリストに入れ、リスト上で何らかの処理をする必要があります。サイズが大きいとQListがクラッシュする
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;
}
「qvector.h、行534:Out of memory」エラーが表示されます。
リストが< 1197762アイテムのサイズに達すると、プログラムがクラッシュします。私は予備()を使用してみましたが、動作しませんでした。 QListは特定のサイズに制限されていますか?
RAMは特定のサイズに制限されています。 – Kane
プログラムで使用されているメモリが、マシンにインストールされているメモリを超えているかどうかを確認できますか。 – basslo
"QListがクラッシュする..."いいえ、そうではありませんでした。クラスはクラッシュすることはできません。アプリケーションがクラッシュしました。 – MrEricSir