2014-01-21 47 views
0

我有一個嚴重的問題,無法在任何地方找到答案。我希望有人能夠幫助我。將對象存儲在樹中給出了分段錯誤(C++)

首先我嘗試創建與存儲在

信息的數組樹的

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); 
     } 
    } 
+0

Node()的構造函數是做什麼的?特別是,你如何踐踏成員'節點*節點[10]'? – Nim

+0

構造函數啓動新節點和新人對象; – user3219523

+0

我的水晶球認爲你還沒有分配陣列中的所有「節點」。 – molbdnilo

回答

2

之前,你甚至嘗試insert中,構造函數在堆上構建10個節點...每個構造10個更多節點...每個節點構造10個更多節點...

我覺得麻煩的是你的電腦沒有足夠的內存。嘗試構建一個有限的樹。

+0

是的,我來到相同的解決方案,但我應該怎麼做呢?我想留在遞歸。 – user3219523

+0

呃,懶洋洋地分配? – Nim

+0

是的,thx的提示其工作! 我實現了一個靜態變量,數量爲20(dosnt需要更多的節點),現在錯誤消失了。 – user3219523

相關問題