C#の配列の最大サイズはInt32.MaxValueより小さいとな?
C#の配列の最大サイズについて調べてみましたので記事にしたいと思いますよ正確にはC#というかdotNet での配列についてとなりますな記事の内容は全てC#での確認をしておりますよまずは仕様としては以下のようになっておりますよgcAllowVeryLargeObjects 要素バイト配列および 1 バイト構造体の配列の場合、単一次元の最大サイズは 2,147,483,591 (0x7FFFFFC7) です。その他の型を含む配列の場合は 2,146,435,071 (0X7FEFFFFF) です。Array クラス配列のサイズは、合計 40 億個の要素に制限され、任意の次元の0X7FEFFFFFの最大インデックスに制限されます (バイト配列と 1 バイト構造体の配列の0X7FFFFFC7)。ということですのでコード例としては以下のようになりますな Int32 maxArraySize4Byte = 0x7FFFFFC7; var array1 = new byte[maxArraySize4Byte]; Int32 maxArraySize = 0X7FEFFFFF; var arraylong1 = new long[maxArraySize];配列インデックスはこれが最大ですな。これ以上だとSystem.OutOfMemoryExceptionの例外がスローされますよ。PCのメモリ搭載量とは関係ないですので注意が必要ですなこの値はどちらも Int32.MaxValue(=2147483647)よりも小さいですから以下はエラーになってしまうのですなvar array1 = new byte[Int32.MaxValue];var array1 = new long[Int32.MaxValue];