Maximale Größe eines Arrays???

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    eigenlich meinte ich nicht wie groß ein integer sein darf, sondern wie viele felder darf ich maximal haben

    jvbsl hat in diesem Punkt aber recht. Ein Array kann maximal Integer.MaxValue Einträge enthalten (also 2147483647). Klingt komisch, ist es aber nicht. Für die Ansteuerung eines Array werden Integer-Werte genutzt. Ergo kann man keine Elemente ansprechen, die größer als der Integer-Wertebereich sind.

    Hierzu auch ein Ausschnitt aus der MSDN:
    Die Länge jeder Dimension eines Arrays ist auf den maximalen Wert des Integer-Datentyps ((2 ^ 31) - 1) beschränkt. Die Gesamtgröße eines Arrays richtet sich nach dem verfügbaren Arbeitsspeicher des Systems und ist damit ebenfalls beschränkt. Wenn Sie versuchen, ein Array zu initialisieren, das die Kapazität des verfügbaren RAM-Arbeitsspeichers übersteigt, löst die Common Language Runtime eine OutOfMemoryException-Ausnahme aus.


    Gruß FatFire

    PS:
    Maximal 999'999'999.

    Wie kommst Du denn auf den Mist?
    @EiPott: Wie kommst du auf diese Zahl? Alle Zahlenformate basieren auf Bits und lassen sich daher als eine 2er-Potenz ausdrücken. Deins währe nur mit BCD als Maximum eines Datenformates denkbar oder als willkürliche Grenze. Is m.E. Unsinn. :)
    Da der Index eines Arrays ein Integer ist, dürfte Jvbl´s Lösung Integer.maxValue (2^32 = -2.147.483.647 bis +2.147.483.647) die richtige sein. Das ganze vielleicht noch mit der Anzahl der Dimensionen multipliziert, dann passt es.
    Wobei, is so ein Riesending wirklich komfortabel? Da würde ich eher zu Datenbanken raten.

    MfG
    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    genau so hatte ich das Integer.MaxValue gemeint, aber die größe ist nicht vom direkt vom Speicher des Systems abhängig, sondern vom dem Programm zugesicherten Speicher, wer tatsächlich eine ähnlich Große Datenmenge benötigt, der sollte wohl besser immer nur den zur Zeit benötigten Teil in den Array laden und den anderen irgendwo auf der Festplatte speichern(von mir aus auch in einer Datenbank ;) )
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---