Problem mit Array Überlauf
-
Hi Leute,
werde ich von Visual C++ 2008 Express nicht gewarnt wenn ich außerhalb des reservierten Array Index versuche Daten zu schreiben?
Gerade hatte ich ein Array mit 7 Elementen also:
struct struktur arrayname[7];Dann traten unerklärliche Fehler auf und ich stellte fest, dass ich versucht hab an Position 8 zu schreiben, was das Programm auch tatsächlich gemacht hat !!!
for (n=0;n<8;n++)
arrayname[n].test = schreiben;Nur leider hats mir dabei in den Rest des Speichers zerschossen...

Microsoft schweigt zu diesem Vorfall ;-), also die IDE macht jedenfalls keinen Mucks...
Gruß
Scarabol
-
Hat aber imho nichts mit MS zu tun
int a[9]; a[100] = 10;Ein Array ist halt auch nur ein Zeiger, darum geht das auch

-
oh oh, das schwant mir schreckliches hab bisher auf den Debugger vertraut...
Gibts einen Trick damit dem Debugger solche Sachen auffallen, z.B. ein Makro oder so?
Gruß
Scarabol
-
Das sind eben die typischen Probleme, die ein Programmierer hat.
Du kannst aber auch fertige Array-Klassen benutzen: CArray::GetAt(x), aber selbst diese Prüfen meist nicht auf zu großen Index, musste halt neue Klasse von CArray ableiten und GetAt(x) entsprechend erweiter, dass dort der Index geprüft wird. Nur ist dann wieder die Frage, wass soll passieren wenn Index zu groß?Der Kompiler kann deinen Fehler leider nicht erkennen.