new double (wo liegt der Fehler)
-
Folgenden Code habe ich:
Class OptA { private: int anzX, anzNB; char *x, art; // LEER oder 0 oder 1 , MIN oder MAX double *c, *g, *G; public: // ... void Initialisiere(int t_X, int t_NB, char t_a=MIN) { art = t_a; anzX = t_X; anzNB = t_NB; x = new char[anzX]; c = new double[anzX]; g = new double[anzX*anzNB]; G = new double[anzNB]; } //... };Wird die Methode void Initialisiere(...) aufgerufen, bricht das Programm immer ab, und zwar nachdem die Zeile "c = new ..." ausgeführt wurde. Aber warum?
-
Die Bezeichner sind aber nicht dein ersnt, oder?
schonmal geguckt, ob ein std::bad_alloc fliegt oder so?
-
Gibt er denn irgenweine Fehlermeldung aus? Ich kann an deinem Schnipselchen nämlich keine gravierenden Fehler erkennen.
-
Doch, die Bezeichner sind mein Ernst, da es sich um ein mathematisches Problem handelt und das die Standartbezeichnungen (x, c, g und G) sind. Und Fehlermeldung bekomm ich keine, das is ja das Problem.
schonmal geguckt, ob ein std::bad_alloc fliegt oder so?
Öhm ... ???
-
mit was für werten für t_X und t_NB rufst du diese funktion denn auf?
-
pack die Initialisierung mal in einen try/catch:
try { ob.Initialize(...); } catch(std::exception& ex) { cerr<<ex.what()<<endl; }
-
Im Normalfall bewegen die sich so zwischen 1 und 10, denke ich. Zur Problemlösung hab ich erstmal beide beim Aufruf auf 3 festgesetzt.
-
Debugger.
-
Ich bin DOOF!
Ich sagte ja, ich habe erstmal feste Werte als Übergabeparameter ... aber an den Konstruktor, von dem aus diese Funktion auch aufgerufen wird. Und dort habe ich aber anzX und anzNB an die Funktion übergeben, die beide noch nicht gesetzt sind (waren).
Das war wohl ein typischer Evolver-Fehler ... trotzdem Danke!