invalid pointer - Laufzeitfehler

jsowieso

Lt. Junior Grade
Registriert
Okt. 2004
Beiträge
272
Hallo,

ich habe ein Programm geschrieben und wollte ein mehrdimensionales Array einfügen. Leider quitierte mir das Programm immer den Dienst mit folgender Fehlermeldung:


Code:
*** glibc detected *** ./a.out: free(): invalid pointer: 0x0804a024 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7d7f836]
/lib/libc.so.6(cfree+0x89)[0xb7d814d9]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7f36861]
/usr/lib/libstdc++.so.6(_ZdaPv+0x1d)[0xb7f368bd]
./a.out(__gxx_personality_v0+0xf9)[0x8048505]
/lib/libc.so.6(__libc_start_main+0xe0)[0xb7d2e390]
./a.out(__gxx_personality_v0+0x35)[0x8048441]

Ich haben das Programm auf den käfrigen Code zugeschnitten hier abgebildet. Kompilieren ( g++ array.cpp) lief ohne Probleme, Erst die Ausführung scheiterte.

Code:
int main() {
        int (* const Array)[7] = new int [5][7];

        for (int zeile = 0; zeile < 5; ++zeile){
                delete[] Array[zeile];
        }
        delete [] Array;
}

Kennt jemand dieses Problem, woran könnte dies liegen? Ich habe eine aktuelle glibc und ich denke nicht das der Paketmanager eine fehlerhafte Installation geliefert hat. Den Quellcode habe ich noch einmal in einem Buch überprüft, allerdings keinen Fehler gefunden (ließ sich ja auch kompilieren).

Eindimensionale Arrays: int *p = new int; funktionieren übrigens.
gcc-Version 4.2.2


Es wäre schön wenn jemand von euch eine Idee hätte, ich bin nämlich ziemlich ratlos.
 
So schnell habe ich ein Problem noch nie gelöst. Kaum veröffentlicht finde ich selbst die Lösung. Ich habe wegen der Fehlermeldung gedacht der Fehler läge in der Initialisierung der Elemente, dabei war das Problem deren Löschung.

Code müsste so aussehen:
Code:
int main() {
      int (* const Array)[7] = new int [5][7];

      delete [] Array;
}

Ich muss also nicht jedes Element des Arryas einzeln löschen. Bin da wohl etwas durcheinander geraten. Tut mir leid, das Thema hätte ich mir schenken können... (durch das ganze Tippen bin ich aber wahrscheinlich um einiges schneller auf die Lösung gekommen ; - ) )
 
Ich nehme mal an das ist C++ ?!

Gerade mit Dev-C++ Probiert und es tauchen keine Fehler auf.

/edit: lol, nicht aktualisiert ;)
 

Ähnliche Themen

Zurück
Oben