代码的一部分:public struct connect
{
public int iIp1;
public int iIp2;
public int iIp3;
public int iIp4;
public string cStart;//辅助用 public string cUser1;
public string cPwd1; public string cMid1;//辅助用 public string cUser2;
public string cPwd2; public string cMid2;//辅助用 public string cUser3;
public string cPwd3; public string cUser4;
public string cPwd4;
public string cDB; public string cEnd;//辅助用
}
private connect Byte2Struct(byte[] arr)
{
int structSize = Marshal.SizeOf(typeof(connect));
IntPtr ptemp = Marshal.AllocHGlobal(structSize);
Marshal.Copy(arr, 0, ptemp, structSize);
connect rs = (connect)Marshal.PtrToStructure(ptemp, typeof(connect));
Marshal.FreeHGlobal(ptemp);
return rs;
} 运行到这句就出错 connect rs = (connect)Marshal.PtrToStructure(ptemp, typeof(connect));
错误内容:在被保护的存储器里(上)领会再写入打算进行操作。能考虑其他的存储器坏掉的事。 (用软件翻译的日语)我也看不太懂。有没有有经验人士来解答一下出错的原因,谢谢!
{
public int iIp1;
public int iIp2;
public int iIp3;
public int iIp4;
public string cStart;//辅助用 public string cUser1;
public string cPwd1; public string cMid1;//辅助用 public string cUser2;
public string cPwd2; public string cMid2;//辅助用 public string cUser3;
public string cPwd3; public string cUser4;
public string cPwd4;
public string cDB; public string cEnd;//辅助用
}
private connect Byte2Struct(byte[] arr)
{
int structSize = Marshal.SizeOf(typeof(connect));
IntPtr ptemp = Marshal.AllocHGlobal(structSize);
Marshal.Copy(arr, 0, ptemp, structSize);
connect rs = (connect)Marshal.PtrToStructure(ptemp, typeof(connect));
Marshal.FreeHGlobal(ptemp);
return rs;
} 运行到这句就出错 connect rs = (connect)Marshal.PtrToStructure(ptemp, typeof(connect));
错误内容:在被保护的存储器里(上)领会再写入打算进行操作。能考虑其他的存储器坏掉的事。 (用软件翻译的日语)我也看不太懂。有没有有经验人士来解答一下出错的原因,谢谢!
ArgumentNullException structureType is nullptr.
没有你所说的,在被保护的存储器里进行写入操作.你说的相当于是对只读属性的内存进行写入操作发生的异常.你这段代码在什么环境进行的测试,我这里测试是没问题的