サイズのバイト配列の割り当てがint.MaxValue
失敗する理由
byte[] array1 = new byte[int.MaxValue]; // throws an OutOfMemoryException
サイズの2つの配列の割り当ては そうでint.MaxValue / 2
はありませんか?
byte[] array2 = new byte[int.MaxValue / 2];
byte[] array3 = new byte[int.MaxValue / 2];