我有一个Open GL ES主循环,它调用2个函数;每个循环一次绘制和更新。
以下是绘制循环中的代码:
float* sample_data = userdata->sample_data;
int fft_length = userdata->fft_length;
cout << 'a' << endl;
cout << fft_length << endl;
GLfloat* points = new GLfloat[3 * fft_length];
cout << 'b' << endl;
// Draw tingz
for(int ix = 0; ix < fft_length; ++ ix)
{
float ratio = float(ix) / float(fft_length - 1);
float x = -1.0 + 2.0 * ratio;
float y = sample_data[ix];
points[3 * ix + 0] = x;
points[3 * ix + 1] = y;
points[3 * ix + 2] = 0.0;
}
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, points);
glEnableVertexAttribArray(0);
glDrawArrays(GL_LINE_STRIP, 0, fft_length);
std::cout << 'd' << std::endl;
delete [] points;
std::cout << 'e' << std::endl;
// End of function
输出打印一次,但只打印a
和256
,这是fft的长度。
因此,我认为这是对“&#39; new&#39;出现问题的地方。出现在屏幕上的下一行文字是:
*** glibc detected *** ./main.out: malloc(): memory corruption: 0x01319648 ***
这让我感到困惑,因为我无法立即发现任何错误。我分配内存并再次删除它。我的猜测是我犯了一个我无法发现的愚蠢错误?