c++ - for 循环中的动态数组分配会引发错误

标签 c++ opengl memory-management

我有这个 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]]; 处引发以下内存异常

Demo(12783,0x7fff7367e960) malloc: * error for object 0x1028cd408: incorrect checksum for freed object - object was probably modified after being freed.

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

谢谢

最佳答案

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

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

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

关于c++ - for 循环中的动态数组分配会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452243/

相关文章:

c++ - 快速排序算法不起作用

c++ - 最小二乘的 SparseQR

c++ - 在 Yosemite 中通过 g++ 链接 SOIL 的问题

linux - 逻辑地址(虚拟地址空间)而不是物理地址空间的原因

c++ - Dlib。如何解决实时的优化约束?地标融合的想法?

java - LibGDX - 基本的 2D 光照,不知道该怎么做

delphi - opengl 中的多语言 Unicode 渲染

ios - Objective-C : GestureRecognizer in ViewController --> retain cycle?

android - 为什么我的 android 应用程序在启动时使用了这么多内存

c++ - 读取部分字符串到整数数组