Standardfehler mit stl-vector?



  • Hallo,

    Ich steh hier gerade etwas aufm schlauch. will ganz einfach mehrere vector-container erzeugen, aber statt einfach leere container bekomm ich machmal recht merkwürdige ergebnisse.

    hier die meine deklaration

    vector<double> x, y, phi, r, wx, wy, wphi, wr;
    

    manchmal bekomm ich ein gutes ergebnis:

    wr[0]()	std::vector<double,std::allocator<double> >
    

    und manchmal ein schlechtes:

    wy[4294528459](-2.5301706769843864e-098,0.00000000000000000,...) std::vector<double,std::allocator<double> >
    

    also ein vector mit 4294528459 elementen. ich seh gerade nicht so recht was ich falsch mache. den ganzen code möchte ich hier nun nicht posten, ist etwas umfangreich. vlt ist es ja ein typischer fehler und jemand sieht hier sofort was da falsch läuft. wäre super ...

    gruß christian



  • Das sieht schwer nacht nicht-initialisierung aus.

    Aber ohne Code wird das reines Ratespiel.Probier deinen Code mal so zu ändern, dass du möglichst wenig hast, aber den Fehler immernoch, dann kansnte posten.



  • oh, ich seh hier gerade, dass es anscheinend doch richtig ist. was ich oben gepostet habe war die visual-studio debugger-info. wenn ich das aber über die konsole ausgebe kommen die richtigen vektorlängen?! keine ahnung wat dat soll ... ich rauf mir hier die haare, und stimmt doch alles?



  • aha: hatte die ausgabe auf 'Release' statt auf 'Debug'. Na da kann es wohl vorkommen, dass der debugger mir merkwürdige ergebnisse liefert.
    und den fehler kann man wohl auch nicht aus obigen code-schnipseln erkennen ... trotzdem danke für den versuch.

    grüße, christian



  • ACHTUNG!!!
    Ich glaube nicht, dass Du Dein Problem gelöst hast !!

    djang0 schrieb:

    aha: hatte die ausgabe auf 'Release' statt auf 'Debug'.....

    Sowas ist ganz klassisch für das von drakon angesprochene Problem.
    Nochmal direkt die Frage: Wo teilst Du dem vector mit, wieviele Elemente er haben soll ?
    Solange Du das nicht tust, legt er nämlich keinen Speicher an und greift bei "wr[0]" ... einfach ins Nirvana (das im Debug-Modus oft mit 0 initialisiert wird ... im Release-Modus oft undefiniert ist (was dann wie "4294528459" o.ä. aussieht).
    Aber dass es "irgendwie im Debugmodus läuft", ist leider noch kein hinreichender Beweis für korrekten Code...

    Gruß,

    Simon2.



  • Aber dass es "irgendwie im Debugmodus läuft", ist leider noch kein hinreichender Beweis für korrekten Code...

    Genau. Im Gegenteil. Wenn etwas in Debug läuft und in Release nicht, dann ist da bestimmt ein Fehler drin. (Diese 0-Initialisierung macht eh mehr Probleme, als das es nützt).

    Dein Programm sollte sich GENAU gleich im Debug, wie im Relese verhalten. Wenn es das nicht tut, dann hast du einen Fehler drin. (Sehr wahrscheinlich keine Initialisierung).


Anmelden zum Antworten