Sicherheit gegen Arrayüberschreitung
-
Hi!
Ich schreibe pro Programmdurchlauf (ca. 60 pro Sekunde) Werte in ein Array
der Größe 10000. Dabei könnte es vorkommen, dass die Anzahl der Werte das Array
übersteigt. Wie teste ich am besten, ob ich noch im zulässigen Bereich bin?
Schreibe ich vor jeden Zugriff aufs Array eine Abfrage, ob ich noch innerhalb
der Grenze bin? Kommt mir irgendwie unschön vor bei der großen Anzahl der daraus
resultierenden Operationen?!Grüße
Huddi
-
Nimm doch einfach ein int i = 0 den du bei jedem Einfügen um eins hoch zählst.
Und dann noch eine if-Abfrage, ob i kleiner als die Array-Grösse ist...
-
Ja genau das meint ich. Hab den Zaehler sowieso drin fürs Array.
Hab mich nur gefragt, obs vielleicht etwas automatisches gibt. Aber
600000 if Abfragen pro Sekunde sollte noch keine Performancebremse sein oder?
-
Wenn Du eine Schleife hast, weißt Du doch vorher wie weit die Schleife läuft, also kannst Du das dort doch kontrollieren.
Alle anderen Klassen machen das auch in Debug-Versionen direkt bei Zugriff auf das einzelne Element.
-
Wenn Du eine Schleife hast, weißt Du doch vorher wie weit die Schleife läuft, also kannst Du das dort doch kontrollieren.
Nein, genau das ist das Problem. Es wird gerechnet bis ein bestimmter Wert
erreicht ist.
Der maximal zu erreichende Wert allerdings wird indirekt durch eine Configdatei
festgelegt. Ich könnte mein Array jetzt dynamisch auf diese Größe setzen, dann
könnte ohne Codeänderung keine Speicherüberschreitung auftreten.Wie wird das denn "bei den großen" gemacht? Gibts immer ne Abfrage oder spart
man sich das, wenn man weiß, dass -eigentlich- keine Grenze überschritten werden
kann?
-
Wenn du CArray verwendest, dann kannst du mit Add ja immer am Ende einfügen und hast (abgesehen vom Speicherverbrauch) auch nicht das Problem, dass du über das Arrayende hinausgehst.