在树中存储对象会产生分段错误(c ++)

时间:2014-01-21 15:39:39

标签: c++ tree nodes fault

我有一个严重的问题,无法在任何地方找到答案。我希望有人能在这里帮助我。

首先,我尝试创建一个包含存储在

中的信息的数组树

Node.h文件

class Node {
public:
 Node();
 void setPerson(Person* _p) {
 this->person = _p;
 }

Node* getNode(int i) { return nodes[i];}
void insert(Person* _p, Tele* _tele, int i);
private:
 Node *nodes[10];
 Person* person;
};

Node.cpp

Node::Node() { 
    for(int i=0;i<10;i++) { nodes[i] = new Node(); } 
    person = new Person(); 
}

void Node::insert(Person* _p, Tele _tele, int i) {
      std::string t=tele.getString();
      if(t.size()==i) {
         this->person = _p;   // here comes the segmentation fault
       } else {
       char charNode t.at(i);
       int nextNode = charNode - '0';
       nodes[nextNode]->insert(_p,_tele,++i);
       }
   }

1 个答案:

答案 0 :(得分:2)

在你尝试insert之前,构造函数在堆上构造了10个节点......每个节点构造了10个节点......每个节点构造了10个以上的节点......

我认为麻烦的是你的电脑没有足够的内存。尝试构建 有限 树。