我有一个运行良好的代码。突然,它开始在一个位置出现致命错误。错误消息如下。它发生的是一个 byte[] 分配。
byte[] b = new byte[69+(data.Length*4)];
其中长度 = 1078400。(对于较小的尺寸,代码运行正常)。
检测到 FatalExecutionEngineError 消息:运行时遇到致命错误。错误地址位于线程 0x11d8 上的 0x5e53a1f9。错误代码为 0xc0000005。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
编辑:更多代码:
public WriteFocFile(List fochead, cuFloatComplex[] data,> string path)
{ 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); }