首页 新闻 会员 周边

关于 Marshal.Copy 发生 “请求的范围扩展超过了数组的结尾” 的问题

0
[已关闭问题] 关闭于 2017-04-02 22:30

从外部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);

C#
树欲静·而风不止的主页 树欲静·而风不止 | 初学一级 | 园豆:83
提问于:2017-03-15 16:48
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册