Why the Allocation of an array with int.MaxValue fails and the allocation of two arrays with the size  int.MaxValue / 2 does not?
<p>Why the allocation of a byte array with the size <code>int.MaxValue</code> fails </p>

<pre><code>    byte[] array1 = new byte[int.MaxValue]; // throws an OutOfMemoryException 
</code></pre>

<p>and the allocation of two arrays with the size  <code>int.MaxValue / 2</code> does not?</p>

<pre><code>    byte[] array2 = new byte[int.MaxValue / 2];
    byte[] array3 = new byte[int.MaxValue / 2];
</code></pre>
