从外部API回调得到的一个指针,如
callbackfun(intptr buff, int bufSize);
要读取其中末尾192个字节中的前64个字节, bufSize > 192
byte[] b=new byte[64];
Marshal.Copy(buff, b, bufSize-192, 64); //<-- 触发“请求的范围扩展超过了数组的结尾”
这是什么原因呢?
如果把 buff 全部都到 byte[] 中,再从 byte[]中取指定位置和长度的数据,则没有问题
byte[] a=new byte[bufsize];
Marshal.Copy(buff, a, 0, bufSize);
byte[] b=new byte[64];
Array.Copy(a, bufSize-192, b, 0, 64);