方法调用上的分段错误

时间:2012-11-10 21:50:30

标签: c++ segmentation-fault

我意识到调试器会有所帮助,但我现在对使用它的知识有点缺乏。但我保证我会尽快开始学习!所以,如果有人也知道如何通过提示学习如何学习使用gdb。我很欣赏它!感谢。

3 个答案:

答案 0 :(得分:3)

如果你正在使用GCC,我衷心建议使用GDB。

我喜欢Eclipse ...但我通常会发现命令行更快更有用。 IMHO ...

无论如何:

1)使用“-g”编译以允许调试,

2)在gdb中运行你的程序,

3)注意<#p>上崩溃的行#

4)向后看 ,看看是否有关于你没有分配的那一行的内容,你已经解除分配,或者很可能是你用一个糟糕的数组访问覆盖。

以下是一些关于GDB的优秀简短教程:

'希望有所帮助!

PS:

当你开始调试时,我建议你在“Nodes”构造函数和ManipulateArray构造函数中设置断点。

如果你没有点击断点...那么一个对象永远不会被创建......你可能找到了你的bug:)

答案 1 :(得分:2)

哇,这是一大堆代码。我不知道它是什么,但我可以看到一个问题

Node课程中,您有一组四个Node指针,名为attachedNode。你的代码中没有任何时候你会指出这些指针。但是你在attachNewNode方法中取消引用这些指针。那是一个段错误。

我不知道如何建议你解决这个问题(或者你可能遇到的任何其他问题,我认为有一些问题)因为我不太清楚代码应该做什么。

然而,有一条建议。这段代码太大而且复杂。首先获得一小部分工作,然后逐步构建整个程序。缓慢而稳定的方法最终会让你更快。

答案 2 :(得分:0)

快速浏览一下 void Node :: attachNewNode(Node * newNode,int direction){* newNode = * attachedNode [direction];} 看起来有点不对劲。赋值应该是attachNode [direction] = newNode; 您想要在某个方向上附加新节点。