有更好的方法吗?请注意,我没有使用fixed
,因为我需要扫描缓冲区数据。
GCHandle pinned1 = GCHandle.Alloc(Pic1, GCHandleType.Pinned);
IntPtr ptr1 = pinned1.AddrOfPinnedObject();
byte* p1 = (byte*)ptr1.ToPointer();
//...
//...
//...
byte a=*p1;
p1++;
//...
//...
pinned1.Free();
答案 0 :(得分:7)
是的,有更好的方法:使用fixed
。
您可以简单地将指针指定给另一个变量并对其执行指针运算:
fixed (byte* ptr = pic1)
{
byte* p1 = ptr;
//...
byte a = *p1;
p1++;
//...
}