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?


  • Mod

    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.


Anmelden zum Antworten