我在哪里做错了什么?执行时出错(运行时错误)

Xorraxx

我做错了什么 我收到一个错误:在此行中:

Buffer.BlockCopy((Array) numArray, icondirentry.ImageOffset, (Array)
                 iconFile.iconImage[index], 0, icondirentry.BytesInRes);

错误:数组的偏移量和长度超出范围,或者计数大于从索引到源集合末尾的元素数。

此方法的完整代码为:

 public static IconClass.IconFile FromFile(string filename)
      {
        IconClass.IconFile iconFile = new IconClass.IconFile();
        byte[] numArray = File.ReadAllBytes(filename);
        GCHandle gcHandle = GCHandle.Alloc((object) numArray, GCHandleType.Pinned);
        iconFile.iconDir = (IconClass.ICONDIR) Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof (IconClass.ICONDIR));
        iconFile.iconEntry = new IconClass.ICONDIRENTRY[checked ((int) iconFile.iconDir.Count - 1 )];
        iconFile.iconImage = new byte[checked ((int) iconFile.iconDir.Count - 1)][];
        int num1 = Marshal.SizeOf((object) iconFile.iconDir);
        Type type = typeof (IconClass.ICONDIRENTRY);
        int num2 = Marshal.SizeOf(type);
        int num3 = 0;
        int num4 = checked ((int) iconFile.iconDir.Count - 1);
        int index = num3;
        while (index <= num4)
        {
          IconClass.ICONDIRENTRY icondirentry = (IconClass.ICONDIRENTRY) Marshal.PtrToStructure(new IntPtr(checked (gcHandle.AddrOfPinnedObject().ToInt64() + (long) num1)), type);
          iconFile.iconEntry[index] = icondirentry;
          iconFile.iconImage[index] = new byte[checked (icondirentry.BytesInRes - 1 )];
          Buffer.BlockCopy((Array) numArray, icondirentry.ImageOffset, (Array) iconFile.iconImage[index], 0, icondirentry.BytesInRes);
          checked { num1 += num2; }
          checked { ++index; }
        }
        gcHandle.Free();
        return iconFile;
      }
元帅
(Array) iconFile.iconImage[index]

检查index是否不大于IconImage成员(数组,列表或其任何大小)的大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java-执行OpenSSL命令运行时出错

运行时执行输出

什么是“运行时”?

在哪里抛出HTTP运行时异常

在哪里可以获取在jdk 1.6中编译的OkHttpClient版本?我在WAS 7上运行时遇到UnsupportedClassVersionError

无法加载本地TensorFlow运行时。原因:找不到图像。我究竟做错了什么?

在Ubuntu上将dotnet运行时安装在哪里?

运行时8086 16位除法溢出错误

在PhpMyAdmin中运行时,哪里给我不同的结果

当我逐步执行时,for循环在宏中有效,但在尝试运行时会出现运行时错误“ 91”

当使用Bazel运行时,我应该将Tensorflow的.pb图形保存在哪里?

此错误是什么意思,我在哪里做错了?'目标/ Y:0'TensorFlow:形状错误。

为什么此代码编译并在执行时给出运行时错误

运行时将解密文件存储在哪里?

在IOS模拟器下运行时,我的代码在哪里?

我的排序算法运行时错误

为什么我的代码出现运行时错误?

可执行文件在运行时在哪里寻找共享对象?

Java:方法;我在哪里做错了?

为什么我的代码给出运行时错误?

我在哪里做错了/做和陈述

UVa 562 运行时错误。我能做什么?

将数据框转换为 xts 进行时间序列分析时我做错了什么?

获取运行时错误“6”:溢出错误

Xamarin Visual Studio Mac:“运行时”节点是什么?在哪里?

在 juputerlab 上运行时 dask 在哪里存储文件

Go 运行时在哪里寻找插件?

当我测量应该为 O(n) = n 的算法的运行时间时,我得到 O(n) = 1。我做错了什么?

我做错了什么导致分段错误?