我有一个长度为97536的索引数组,当它到达16,129时,它给了我一个空指针异常。 Index[] indices = new Index[6 * (VERTEX_COUNT - 1) * (VERTEX_COUNT * 1)];
。然后我有一个double for循环和一个指针来循环数组中的所有对象并初始化它们。为什么我的0-16129的索引数组不是null,其余的都是?
int pointer = 0;
for(int gz = 0; gz < VERTEX_COUNT - 1; gz++)
{
for(int gx = 0; gx < VERTEX_COUNT - 1; gx++)
{
indices[pointer] = new Index((gz * VERTEX_COUNT) + gx);
indices[pointer] = new Index(((gz + 1) * VERTEX_COUNT) + gx);
indices[pointer] = new Index(((gz * VERTEX_COUNT) + gx) + 1);
indices[pointer] = new Index(((gz * VERTEX_COUNT) + gx) + 1);
indices[pointer] = new Index(((gz + 1) * VERTEX_COUNT) + gx);
indices[pointer] = new Index((((gz + 1) * VERTEX_COUNT) + gx) + 1);
pointer++;
}
}
当数组是int[] indices
时,没有出现此错误。我很困惑,想知道为什么在16129发生空指针异常。第一个想法是,for循环从来没有达到正确的数字,如果是的话,我将如何计算? - 提前致谢
你是如何实例数组? –
您似乎也在覆盖阵列中相同的位置6次 - 您可能想重新考虑阵列的工作方式。 –
为什么你不断更换你正在实例化的所有对象?这只会让他们因为超出范围而被GC'd。并且由于您正在运行嵌套循环,因此您将以'pointer = VERTEX_COUNT * VERTEX_COUNT'个迭代结束...... –