hi!
möchte einen QVector vor dem Füllen mit einer möglichst großen Größe erzeugen.
vector = new QVector<double>;
vector->reserve(1000000); /1 Mill
geht.
Versuche ich es mit 10Mill stürzt das Programm beim "reserve" ab.
Woran könnte das liegen? Habe in den docs nichts über eine Größenbeschränkung finden können. An einem integer Überlauf dürfte es acuh nicht liegen...
Gruß
Martin
sehr großer QVector
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
für das projekt wird momentan noch qwt verwendet.
QWT schluckt leider nur Arrays. Von daher fällt die Lösung mit der Liste raus.
evtl. könnte ich einen Vector nehmen, in dem wiederum Pointer auf Listen mit 100 Einträgen gespeichert sind.
Die benötigte Größe des Vectors wird dann um Faktor 100 verkleinert.
Wenn ich jetzt aber plotten möchte müsste ich jedes mal die Werte (Ausschnitte sollten reichen) wieder in ein neues Array schreiben.
ist ne komplexe Lösung und die Laufzeit wird auch nicht so toll werden...
gibts noch andere Möglichkeiten?
QWT schluckt leider nur Arrays. Von daher fällt die Lösung mit der Liste raus.
evtl. könnte ich einen Vector nehmen, in dem wiederum Pointer auf Listen mit 100 Einträgen gespeichert sind.
Die benötigte Größe des Vectors wird dann um Faktor 100 verkleinert.
Wenn ich jetzt aber plotten möchte müsste ich jedes mal die Werte (Ausschnitte sollten reichen) wieder in ein neues Array schreiben.
ist ne komplexe Lösung und die Laufzeit wird auch nicht so toll werden...
gibts noch andere Möglichkeiten?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ja, herausfinden warum bei Dir bei 80MB schon Schluss ist. Ggf. Ram aufrüsten und/oder aktuelle Qt-Version testen (vielleicht ist ja doch ein Bug drin). Wie gesagt - bei mir ging es bis 1.5GB problemlos.butze hat geschrieben: gibts noch andere Möglichkeiten?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
am initialisieren liegts aber nicht, oder? habs auf 1GB Ram getestet
.h:
QVector<double>* vector;
.cpp:
vector = new QVector<double>;
vector->reserve(1000000); // == 1 Mill 10Mill geht nicht
..habe noch vergessen zu erwähnen, dass ich mehrere von diesen Vectoren habe. Bis zu 40 Stück! Aber auch beim ersten initialisieren schmiert er ab :/
.h:
QVector<double>* vector;
.cpp:
vector = new QVector<double>;
vector->reserve(1000000); // == 1 Mill 10Mill geht nicht
..habe noch vergessen zu erwähnen, dass ich mehrere von diesen Vectoren habe. Bis zu 40 Stück! Aber auch beim ersten initialisieren schmiert er ab :/
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: