2014-01-21 2 views
0

심각한 문제가있어 어디서나 답변을 찾을 수 없습니다. 나는 누군가가 나를 도울 수 있기를 바랍니다.트리의 저장소 객체가 세그먼트 화 오류를 발생시킵니다. (C++)

내가

에 저장된 정보와 배열 트리를 만들려고 모든

먼저 당신도 insert을 시도하기 전에

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()'의 생성자는 무엇을합니까? 특히, 어떻게'Node * nodes [10]'멤버를 밟을 수 있습니까? – Nim

+0

생성자가 새 노드와 새 person 객체를 시작합니다. – user3219523

+0

내 수정 구슬은 아직 배열에있는 모든 노드를 할당하지 않았다고 생각합니다. – molbdnilo

답변

2

파일의 생성자는 힙에 10 개의 노드를 만듭니다. 각 노드는 10 개의 노드를 구성하며 각 노드는 10 개의 노드를 더 만듭니다.

문제는 컴퓨터에 충분한 메모리가 없다고 생각합니다. 유한 트리를 대신 작성하십시오.

+0

예. 같은 해결책을 찾았지만 어떻게해야합니까? 나는 재귀에 머물고 싶다. – user3219523

+0

Erm, 지연 할당 하시겠습니까? – Nim

+0

예, 그 팁을위한 thx는 일한다!! 20으로 계산 된 정적 변수를 구현했는데 (더 많은 노드가 필요함) 오류가 사라졌습니다. – user3219523