OpenGL 和 GLUT 中0x009f240e处未处理的异常 - 101.exe:0xC0000005:访问违规写入

Unhandled exception at 0x009f240e in OpenGL and GLUT - 101.exe: 0xC0000005: Access violation writing location 0x00000000

本文关键字:0xC0000005 exe 访问 GLUT 0x009f240e 异常 未处理 OpenGL      更新时间:2023-10-16

我不断收到以下错误:OpenGL 和 GLUT 中0x009f240e处未处理的异常 - 101.exe: 0xC0000005:访问违规写入位置0x00000000。

我在这里发现了一些具有类似错误代码的问题,但它们似乎都说问题是:取消引用 NULL 指针。 但是,我似乎找不到任何真正解释这意味着什么或该怎么做的东西。

这是我代码的一小部分示例:

Tree* myTree; //global variable pointer
int main (int argc, char** argv)
{   
      fstream file = fstream ("Tree.txt");
      *myTree = Tree(file);   // This is where the error is occuring
}

如果有人对我可以做些什么来解决这个问题有任何建议或想法,请告诉我。 如果我应该添加任何其他代码,也请告诉我。

这个:

*myTree = Tree(file);

通过取消引用未初始化的指针来写入未分配的内存。指针似乎指向 0,这解释了该地址的异常。

我猜你想做的是创建一个Tree的实例,并让全局指针myTree指向它。

如果是这种情况,则问题出在用于创建和分配该实例的语法上。 *myTree实际上取消引用指针,您尝试将其分配给Tree(file)

您需要做的是使用 new 运算符创建一个 Tree 实例,并将返回值(指向新创建的实例的指针)分配给指针 myTree(而不是取消引用的 *myTree)。

int main (int argc, char** argv)
{   
      fstream file = fstream ("Tree.txt");
      myTree = new Tree(file);   // Create a new instance of Tree and store its pointer in myTree
}
不要忘记

释放operator new创建的内存,方法是在完成myTree时调用delete

相关文章: