27 Stimmen

Die Begrenzung der Größe von .Net-Arrays

Ich habe gehört, dass es eine feste Grenze für die Größe von .Net Array . Es wird gesagt, dass die maximale Menge an Speicher, die einer einzelnen Instanz eines Programms zugewiesen werden kann Array Objekt ( unabhängig davon, ob es sich um int[] , double[] oder Ihr eigenes Array) beträgt 2 GB. Und nein, wenn Sie einen 64-Bit-Rechner haben, ist die 2-GB-Grenze immer noch vorhanden.

Ich bin mir nicht sicher, ob mein Eindruck richtig ist oder nicht. Kann das jemand bestätigen?

0 Stimmen

Wow, Sie haben eine interessante Diskussion angestoßen.

0 Stimmen

Falls es Sie beruhigt: Die 2-GB-Grenze gilt auch für nicht verwalteten Code. Dies ist eine Einschränkung im x64-Befehlssatz, indizierte Offset-Adressierung hat immer noch eine 32-Bit-Grenze für den Offset. Es ist nicht so, dass es nicht überwunden werden kann, es ist nur sehr ineffizient, dies zu tun.

1 Stimmen

Hans Passant: Ich verwende C++ unmanaged Code in meinem x64 app, um ein Array von 600E6 Doubles mit malloc zuzuweisen. Das sind 4,8E9 Bytes.

0voto

ata Punkte 8605

Ich hoffe, das hilft: http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx

d.h.

  1. Er verwendet int als Index, der einen Maximalwert von 2.147.483.647 (2GB) hat.
  2. Das ist gewollt. 2.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X