2011-10-18 42 views
-3

私は、アレイ配列インデックスの最大サイズを見つける方法は?

double[,] i=new double[2147483647,10] ; //2147483647=max size of int 

を宣言したが、私は21474836にインデックス2147483647を減らす場合には、それが正常に動作しているメモリ例外

の外に投げます。

どのようにして配列の最大サイズを知ることができましたか?

+10

2億1000万回以上のダブルスで何をやっていますか? – Fischermaen

+1

「ダブル」の大きさと、割り当てようとしているセルの数について考えてみましょう。 'double'は8バイトで、' 2147483647 * 10'セルを割り当てようとしています(配列のメタデータそのもののためのメモリは含みません)。 171,798,691,760バイト(〜160 GiB)のメモリを割り当てることは合理的ですか? –

+1

2147483647は7FFFFFFFです。これは最大32bitであります。 – Marco

答えて

0

その場合は(2^31)です。私はそれが64ビットか32ビットのどちらをターゲットにするかによって異なると思います。

1

おそらく理由は配列のインデックス付けを "0"で始めるためです。最初の要素のインデックスは "0"最後の "21474836"です。

+0

元のインデックスは2147483647ではなく、21474836です。 – niknowj

関連する問題