title: Why the Allocation of an array with int.MaxValue fails and the allocation of two arrays with the size  int.MaxValue / 2 does not?
body: <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>