我有一个工作正常的代码。突然间它开始在一个地方发出致命错误。错误消息如下。 它出现的是byte []分配。
byte[] b = new byte[69+(data.Length*4)];
其中Length = 1078400.(对于较小的大小,代码运行正常)。
检测到FatalExecutionEngineError消息:运行时具有 遇到致命错误。错误的地址是0x5e53a1f9, 在线程0x11d8上。错误代码是0xc0000005。这个错误可能是一个 CLR中的错误或用户的不安全或不可验证部分 码。此错误的常见来源包括用户编组错误 COM-interop或PInvoke,可能会破坏堆栈。
编辑:更多代码:
public WriteFocFile(List fochead,cuFloatComplex [] data,> 字符串路径)
{ double[] a = new double[fochead.Count]; a = fochead.ToArray(); double datares = (a[6] - a[5]) / (Math.Pow(2,a[3])); byte[] b = new byte[69+(data.Length*4)]; b[0] = Convert.ToByte(a[0]); b[1] = Convert.ToByte(a[1]); b[2] = Convert.ToByte(a[2]); b[3] = Convert.ToByte(a[3]); Buffer.BlockCopy(BitConverter.GetBytes(Convert.ToUInt16(a[4])), 0, b, 4, 2); //similarly more Buffer.BlockCopy cuFloatComplex temp; for (int i = 0; i < data.Length; i++) { //array operation and copying of data in b } File.WriteAllBytes(@path+".msf", b); }
答案 0 :(得分:1)
错误是由其他地方的非托管部分代码引起的。很可能非托管代码破坏了托管堆,导致FatalExecutionEngineError。具体而言,错误是由未正确处理的非托管数组引起的。