gpt4 book ai didi

c++ OpenGL 段错误

转载 作者:行者123 更新时间:2023-11-30 01:50:38 26 4
gpt4 key购买 nike

所以,这是我的代码的一部分。我有一个名为 Polygon 的类,它带有一个数组来保存我的坐标。

class Polygon{
private:
GLint Vertices[][2];


public:
Polygon(){
GLint** Vertices = new GLint*[20000];
for (int j=0; j<20000; j++){
Vertices[j] = new GLint[2];
}
}

void setCoord(int m, GLint x, GLint y){
Vertices[m][0] = x;
Vertices[m][1] = y;
}
};

我尝试编译我的代码,当我尝试将我的第一个坐标放入 setCoord() 函数的数组中时(当 m 为 0 时),出现段错误。

不知道为什么。希望大家帮忙。请不要告诉我有关 vector 的信息。我不熟悉这种技术,而且我没有太多时间学习它,因为我的项目必须在 4 天内完成。

谢谢!

最佳答案

GLint** Vertices = new GLint*[20000];

Polygon() 中的局部变量声明构造函数,并隐藏你的 Vertices类成员声明。在构造函数返回后,那里分配的所有内容都会丢失(泄漏)。

您正在访问 setCoord() 中未初始化的内存因此它崩溃

按以下方式更改顶点和构造函数的声明

class Polygon{
private:
GLint** Vertices; // <<<<<< Change declaration


public:
Polygon(){
Vertices = new GLint*[20000]; // <<<<<< Remove GLint**
for (int j=0; j<20000; j++){
Vertices[j] = new GLint[2];
}
}
};

边注

"Please don't tell me about vectors. I'm not familiar with this technique, and I haven't much time to learn it as my project has to be finished in 4 days."

我假设使用 std::vector<> 可能比自己绕过和处理动态内存管理的所有障碍要容易得多。祝你好运!

关于c++ OpenGL 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27211995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com