Hallo,
ich habe ein komisches Problem mit „Speicherverwaltung“, womit ich mich überhaupt nicht auskenne und einfach nicht klar komme.
Ich schreibe ein Impuls-Analyse-Programm und verwende viele große Daten (z.B. Arrays mit hunderttausend oder gar Millionen Speicherblöcke). Ein Fehler was tendenziell oft passiert ist, dass ich mich verrechne und die Arrays überschritten werden. Spätestens bei der Speicherfreigabe („delete []“) meckert c++, dass es ein Problem gibt und ich weiß immer sofort wo der Fehler ist.
Ansonsten klappt alles wunderbar, ich erstelle mir die Arrays („new []“) und gebe diese am Ende wieder frei („delete“).
Aktuelles Problem:
Seit neustem meckert C++ schon bei der Speichererstellung! Je nachdem wie viele Daten ich einlese bleibt das Programm bei irgendeiner Speicherreservierung für eine Variable hängen und gibt folgende Fehlermeldungen bei folgendem Code:
----Code----
Jitter_fe = new double[fe_range]; //fe_range = (int) 560
Jitter_re = new double[re_range]; //fe_range = (int) 561
----Code----
-->Fehlermeldung 1
Debug Error
Program: d:\Visual C++ Express\Wave\debug\Wave.exe
Invalid allocation size: 4294967295 bytes
-->Fehlermeldung 2
Unhandled exception at 0x7c812a5b in Wave.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0012f870..
Kann sich das jemand erklären? Ich würde verstehen, dass beim Löschen ein Fehler entsteht weil der Speicher schon übergelaufen ist, aber wieso kann ich nicht mal Speicher reservieren noch bevor ich das was rein geschrieben habe? Und so viele Daten sind das nun auch wieder nicht, (diese Fehlermeldung entstand bei 100.000 Einlesedaten, ich habe es schon mal mit 10Mio Daten geschafft).
Sicher kann ich nicht verlangen den Fehler zu finden, kann ja nicht meinen ganzen Source-Code reinkopieren, aber es geht mir um die Theorie, habe absolut keine Erfahrung in der Thematik. Vielleicht hatte ja jemand schon mal ein ähnliches Problem.
Danke im Voraus!
ich habe ein komisches Problem mit „Speicherverwaltung“, womit ich mich überhaupt nicht auskenne und einfach nicht klar komme.
Ich schreibe ein Impuls-Analyse-Programm und verwende viele große Daten (z.B. Arrays mit hunderttausend oder gar Millionen Speicherblöcke). Ein Fehler was tendenziell oft passiert ist, dass ich mich verrechne und die Arrays überschritten werden. Spätestens bei der Speicherfreigabe („delete []“) meckert c++, dass es ein Problem gibt und ich weiß immer sofort wo der Fehler ist.
Ansonsten klappt alles wunderbar, ich erstelle mir die Arrays („new []“) und gebe diese am Ende wieder frei („delete“).
Aktuelles Problem:
Seit neustem meckert C++ schon bei der Speichererstellung! Je nachdem wie viele Daten ich einlese bleibt das Programm bei irgendeiner Speicherreservierung für eine Variable hängen und gibt folgende Fehlermeldungen bei folgendem Code:
----Code----
Jitter_fe = new double[fe_range]; //fe_range = (int) 560
Jitter_re = new double[re_range]; //fe_range = (int) 561
----Code----
-->Fehlermeldung 1
Debug Error
Program: d:\Visual C++ Express\Wave\debug\Wave.exe
Invalid allocation size: 4294967295 bytes
-->Fehlermeldung 2
Unhandled exception at 0x7c812a5b in Wave.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0012f870..
Kann sich das jemand erklären? Ich würde verstehen, dass beim Löschen ein Fehler entsteht weil der Speicher schon übergelaufen ist, aber wieso kann ich nicht mal Speicher reservieren noch bevor ich das was rein geschrieben habe? Und so viele Daten sind das nun auch wieder nicht, (diese Fehlermeldung entstand bei 100.000 Einlesedaten, ich habe es schon mal mit 10Mio Daten geschafft).
Sicher kann ich nicht verlangen den Fehler zu finden, kann ja nicht meinen ganzen Source-Code reinkopieren, aber es geht mir um die Theorie, habe absolut keine Erfahrung in der Thematik. Vielleicht hatte ja jemand schon mal ein ähnliches Problem.
Danke im Voraus!