我有这个for循环:

for(int l = 0; l < level_max; ++l) {
    //...
    indexCount[l] = (2*patch_size_level+1) * (patch_size_level - 1);
    GLuint* indices = new GLuint[indexCount[l]];
    //... (for loops in which I fill indices)
    delete[] indices;
}

(完整的代码段可以在这里找到:https://gist.github.com/1915777)

由于某种原因,这会在GLuint* indices = new GLuint[indexCount[l]];上引发以下内存异常



我究竟做错了什么?我没有为索引数组分配更多的indexCount[l]值。 (我已经检查过了)。您如何在这样的循环中正确删除动态数组。

谢谢

最佳答案

可能不相关,但是此行上可能存在读取缓冲区溢出:

glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GL_UNSIGNED_INT) * indexCount[l], indices, GL_STATIC_DRAW);

我不知道sizeof(GL_UNSIGNED_INT)与系统上的sizeof(GLuint)相比如何,但是请检查您的代码中是否存在此类错误。

09-07 03:40