Probleme mit einem const char Array
-
Hallo Programmierhelden!
Ich habe ein (Verständnis-)Problem bei folgendem Code:
const char ok = 7, f = 8; const char ZustTab[7][8] = {{1,f,f,2,f,6,4,f }, { 1,f,f,2,f,6,4,f }, { f,5,0,2,3,f,f,ok }, { f,f,f,2,f,f,f,f }, { f,5,0,f,f,f,f,ok }, { f,5,0,f,f,f,f,ok }, { 1,f,f,f,f,f,f,f }}; BYTE Zustand = ZustTab[10][10];
Obwohl das Feld ZustTab 7x8 groß ist kann ich auf ZustTab[10][10] ohne dass ein Fehler kommt zugreifen. Wieso ist das möglich? Weder der Compiler meckert, noch wird zur Laufzeit eine Exception geschmissen.
-
Weder der Compiler meckert
Kommt auf den Compiler an!
-
der Kompiler ist: Borland C++ Builder. Glaube aber nicht, dass es daran liegt.
-
Hast du dich mal gefragt, wieso Programme abstürzen? Wenn Compiler alle Fehler finden würden, oder die restlichen zur Laufzeit abgefangen würden, würde das nicht passieren.
-
Hier ist doch aber eindeutig definiert, dass das Array nur 7x8 groß sein darf. Erstaunlicherweise klappt das mit dem ZustTab[10][10] ohne Fehler, wenn auch Mist zurückkommt.
-
der Kompiler ist: Borland C++ Builder. Glaube aber nicht, dass es daran liegt.
Mein Compiler meckert, aber nur, wenn ich die Puffer-Sicherheitsprüfung eingeschaltet habe.
-
Original erstellt von F98:
Erstaunlicherweise klappt das mit dem ZustTab[10][10] ohne Fehler, wenn auch Mist zurückkommt.Vielleicht gehört der Speicherbereich danach auch noch zu deinem Programm. Dann wärs kein Wunder...
-
Vielleicht gehört der Speicherbereich danach auch noch zu deinem Programm. Dann wärs kein Wunder...
Naja, ist wirklich selten der Fall, dass das am alleräussersten Bereich des Programmspeichers liegt.
[ Dieser Beitrag wurde am 03.07.2003 um 16:27 Uhr von RenéG editiert. ]