我有这个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)
相比如何,但是请检查您的代码中是否存在此类错误。