title: Where does my native pointer go when I subtract to the BitmapData Scan0
body: <p>I thought that ofNativeInt was returning a pointer to a structure like a 1D array where all the image pixel data was stored. I was expecting the program throwing an exception after the first cycle but it doesn't instead it goes seemingly randomly until the null reference that I was expecting in the first cycle appears.</p>
  
  <pre><code>let Test (img : Bitmap) = 
      let bd = img.LockBits(Rectangle(0,0,img.Width,img.Height),ImageLockMode.ReadWrite,PixelFormat.Format32bppArgb)
      let mutable (pointer:nativeptr&lt;byte&gt;) = NativePtr.ofNativeInt (bd.Scan0)
  
      for i in 1 .. Int32.MaxValue do
          printf "%d : %d\n" i (NativePtr.get pointer 2)
          pointer &lt;- NativePtr.add pointer -4
      done
  </code></pre>
  
  <p>Is the code accesing memory outside of its scope?</p>