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. ]


Anmelden zum Antworten