嗨,我有这个结构
[StructLayout (LayoutKind.Sequential)]
public struct Transfer_packet
{
public int _packet_type; // 0 is action 1 is data
public int _packet_len; // length of data
public byte[] _data;//;= new byte[DataLenght];
public void fill()
{
}
public byte[] deserialize()
{
int size = System.Runtime.InteropServices.Marshal.SizeOf(this);
byte[] arr = new byte[size];
IntPtr ptr = System.Runtime.InteropServices.Marshal.AllocHGlobal(size);
System.Runtime.InteropServices.Marshal.StructureToPtr(this, ptr, true); // error raised
System.Runtime.InteropServices.Marshal.Copy(ptr,arr,0,size);
System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr);
return arr;
}
}
我正在尝试将结构的内容转换为字节数组,以便通过网络发送它并在另一台计算机上检索它,但在代码中(如上所述)我得到了一个错误:
尝试读取或写入受保护的内存。
这通常表明某些内存已损坏。我不知道为什么,对我来说一切都很好,但元帅正试图访问受保护的内存......
如何将结构实例转换为字节数组?我用简单的 C++ 完美地完成了它,memcpy
但在 C# 中我做不到。