std::out_of_range bei Releaseversion
-
Hi,
mein Programm hat komische Runtimeerrors wenn ich es in der Releaseversion erstellen will. Es kommt immer: "Unbehandelte Ausnahme bei 0xXXXXXX in Programm.exe: Microsoft C++-Ausnahme: std::out_of_range an Speicherposition 0xXXXXXX."
So, soweit ich mich informiert habe entsteht sowas nur bei Strings, aber das hab ich auch wenn ich einen Integerarray setzten will
ErrorType[errorcounter] = 0; //errorcounter = 0Wenn ich die Zeile lösche geht es erstmal weiter bis ich den nächsten Array der Variable setzten will. Also hab ich einfach mal alle gelöscht, doch dann fängts auf einmal beim nächsten String an
string DateiEnde = FileCounter[i].substr(FileCounter[i].length() - 4, 4);ect ect...
Also wie gesagt im Debugmodus funktioniert alles, kann man den Fehler abstellen?
-
Laundry schrieb:
Also wie gesagt im Debugmodus funktioniert alles, kann man den Fehler abstellen?
Nur in dem man die Fehler behebt. Bei Fehler die in einer Debugversion und nicht in der Releaseversion auftreten würde ich blind auf uninitialisierte Variablen tippen...
Ich tippe mal darauf das hierbei: "ErrorType[errorcounter]" auf einen unzulässigen Index zugegriffen wird.
cu André
-
Ja, so weit war ich auch, aber eventuell hab ich was falsch gemacht
int errorcounter = 0; int ErrorType[4012]; string FileCounter[4012]; for(int i = 0; i < 4012; i++) { ErrorType[i] = 0; FileCounter[i] = ""; }ich sehe da kein Unterschied warum es in der for Schleife geht aber mit errorcounter nicht

-
weiß keiner eine Lösung?
-
Vermutlich schreibst du an irgendeiner anderen Stelle über Arraygrenzen hinaus und zerschießt dir damit den Speicher. Das macht sich oft nicht dort bemerkbar, wo der Fehler steckt, sondern irgendwann später.
-
MFK schrieb:
Vermutlich schreibst du an irgendeiner anderen Stelle über Arraygrenzen hinaus und zerschießt dir damit den Speicher. Das macht sich oft nicht dort bemerkbar, wo der Fehler steckt, sondern irgendwann später.
danke dir, gelöst.