为什么我会收到 ArraIndexOutOfBoundException?

Why am I getting an ArraIndexOutOfBoundException?

我正在尝试将从文件读取的字节数组 (fileData) 复制到另一个字节数组 (subdata)(代码下方):

                ByteBuffer inputBuffer = decoderInputBuffers[intBufIndex];
                int limit = inputBuffer.capacity();
                int pos = frameIndex * limit;
                byte[] subData = new byte[limit];

                System.arraycopy(fileData, pos, subData, 0, subData.length);

我的问题是为什么我会收到这个错误?

java.lang.ArrayIndexOutOfBoundsException: src.length=732542 srcPos=0 dst.length=1572864 dstPos=0 length=1572864

这怎么可能,因为我明确地说了数组的大小应该是多少。

如果您查看文档(评论中有 linknd),它说该函数的最后一个参数是:

length − This is the number of array elements to be copied.

因此,如果您仔细观察,您正试图从 732542 的数组中复制 1572864,这就是您得到异常的原因