私は、アレイ配列インデックスの最大サイズを見つける方法は?
double[,] i=new double[2147483647,10] ; //2147483647=max size of int
を宣言したが、私は21474836にインデックス2147483647を減らす場合には、それが正常に動作しているメモリ例外
の外に投げます。
どのようにして配列の最大サイズを知ることができましたか?
私は、アレイ配列インデックスの最大サイズを見つける方法は?
double[,] i=new double[2147483647,10] ; //2147483647=max size of int
を宣言したが、私は21474836にインデックス2147483647を減らす場合には、それが正常に動作しているメモリ例外
の外に投げます。
どのようにして配列の最大サイズを知ることができましたか?
その場合は(2^31)です。私はそれが64ビットか32ビットのどちらをターゲットにするかによって異なると思います。
おそらく理由は配列のインデックス付けを "0"で始めるためです。最初の要素のインデックスは "0"最後の "21474836"です。
元のインデックスは2147483647ではなく、21474836です。 – niknowj
2億1000万回以上のダブルスで何をやっていますか? – Fischermaen
「ダブル」の大きさと、割り当てようとしているセルの数について考えてみましょう。 'double'は8バイトで、' 2147483647 * 10'セルを割り当てようとしています(配列のメタデータそのもののためのメモリは含みません)。 171,798,691,760バイト(〜160 GiB)のメモリを割り当てることは合理的ですか? –
2147483647は7FFFFFFFです。これは最大32bitであります。 – Marco