-4

我不断收到以下错误: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
}

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

4

2 回答 2

2

这个:

*myTree = Tree(file);

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

于 2012-11-14T16:17:42.590 回答
0

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

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

您需要做的是Tree使用new运算符创建一个实例,并将返回值(它是指向新创建实例的指针)分配给指针 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通过调用delete来释放由创建的内存myTree

于 2012-11-14T16:26:12.530 回答