【发布时间】:2013-11-17 22:17:25
【问题描述】:
我有一个运行良好的代码。突然,它开始在一个位置出现致命错误。错误消息如下。 它发生在一个 byte[] 分配中。
byte[] b = new byte[69+(data.Length*4)];
其中Length = 1078400。(对于较小的尺寸,代码运行正常)。
检测到 FatalExecutionEngineError 消息:运行时已 遇到致命错误。错误的地址在 0x5e53a1f9, 在线程 0x11d8 上。错误代码为 0xc0000005。这个错误可能是 CLR 或用户的不安全或不可验证部分中的错误 代码。此错误的常见来源包括用户编组错误 COM 互操作或 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); }
【问题讨论】:
-
您有非托管代码吗?你使用外部库吗?你最近更新过这些吗?
-
我不直接使用非托管代码。我只使用了作为引用添加的包装 dll。
-
我认为我们需要一些上下文(包括更多代码,例如
data的来源)。 -
最明显的事情是仔细检查
data.Length的值,确保它不是一个大得离谱的数字。除此之外,您的机器是否有最新的 Windows 更新? -
更新了。长度约为 4 MB,应该不是问题。
标签: c# visual-studio-2010 .net-4.0 bytearray fatal-error