代码的一部分: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));
错误内容:在被保护的存储器里(上)领会再写入打算进行操作。能考虑其他的存储器坏掉的事。 (用软件翻译的日语)我也看不太懂。有没有有经验人士来解答一下出错的原因,谢谢!

解决方案 »

  1.   

    http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspxPtrToStructure会发生下面的2种异常.ArgumentException The structureType parameter layout is not sequential or explicit.-or-The structureType parameter is a generic type.
     
    ArgumentNullException structureType is nullptr.
     没有你所说的,在被保护的存储器里进行写入操作.你说的相当于是对只读属性的内存进行写入操作发生的异常.你这段代码在什么环境进行的测试,我这里测试是没问题的