110,552
社区成员
发帖
与我相关
我的任务
分享
Args[] grip_arg_list = new Args[1];
Tag[] obj = new Tag[2];
grip_arg_list[0].type = UFConstants.UF_TYPE_TAG_T_ARRAY;
grip_arg_list[0].length = 2;
GCHandle IndicesHandle = GCHandle.Alloc(obj, GCHandleType.Pinned);//为指定对象分配指定类型的句柄
IntPtr s = IndicesHandle.AddrOfPinnedObject();
grip_arg_list[0].address = s;
IndicesHandle.Free();
GCHandle IndicesHandle = GCHandle.Alloc(obj, GCHandleType.Pinned);
//Ptr转换成Tag[]数据
Tag[] obj= new Tag[2];
IntPtr pt = grip_arg_list[0].address;
unsafe
{
byte* BytePtr = (byte*)pt.ToPointer();//BytePtr指针指向的是pt数据空间的起始位置
int TagLength = sizeof(Tag); //.Length;
obj[0] = *(Tag*)BytePtr;
BytePtr += TagLength;
obj[1] = *(Tag*)BytePtr;
}
这个方法好像只有obj[0]是正确的,obj[1]的不正确,这个寻址应该怎么修改呢?