title: Marshal.Copy, copying an array of IntPtr into an IntPtr
body: <p>I can't figure out how does the <code>Copy(IntPtr[], Int32, IntPtr, Int32)</code> method works.
  I though it could copy the data contained in multiple IntPtrs into a single IntPtr (as MSDN states) but apparently it doesn't work as I expected:</p>
  
  <pre><code>IntPtr[] ptrArray = new IntPtr[]
  {
      Marshal.AllocHGlobal(1),
      Marshal.AllocHGlobal(2)
   };
  
   Marshal.WriteByte(ptrArray[0], 0, 0xC1);
  
   // Allocate the total size.
   IntPtr ptr = Marshal.AllocHGlobal(3);
  
   Marshal.Copy(ptrArray, 0, ptr, ptrArray.Length);
  
   // I expect to read 0xC1 but Value is always random!!
   byte value = Marshal.ReadByte(ptr, 0);
  </code></pre>
  
  <p>Does someone know if I'm using this method for something that it is not its purpose?</p>