2016-04-14 17 views
1

Ich habe eine Menge Probleme damit und es durch einen Debugger ausführen, aber ich kann immer noch nicht das Problem herausfinden. Es gibt einen Segmentierungsfehler, der dadurch verursacht wird, dass versucht wird, auf ein Mitglied eines Arrays von Zeigern zuzugreifen, die auf Null initialisiert werden sollen. Die Zeile, die das Problem verursacht, ist unten. Jede Anleitung, warum dieser Fehler auftritt, würde sehr geschätzt werden.Array von Zeigern, warum Segmentierungsfehler?

class BNode 
{ 
public: 
    const int m = 6; 
    BNode(); 
    ~BNode(); 
    int keyCount; 
    BNode **pointers; 
    int *keys; 
    void split(int index, BNode *child); 
    void _insert(int value); 
}; 

BNode::BNode() 
{ 
    pointers = new BNode*[m]; 
    cout <<pointers[0]->keyCount; //THIS IS THE TROUBLE LINE************** 
    keys = new int[m - 1]; 
    keyCount = 0; 
} 
+0

Ich sollte auch sagen, dass die Linie nur für Testzwecke da ist, merke ich, dass es sinnlos ist, es da drin zu haben – user5932842

Antwort

2

Ihr Konstruktor hat ein Array für sechs Zeiger zugewiesen.

Sie haben dann auf das Objekt zugegriffen, auf das der erste Zeiger verweist.

Das Problem ist, dass Sie keine Objekte zugewiesen haben. Ihre sechs Zeiger sind nicht initialisiert.

new BNode*[6]; // ...essentially 

Dies weist sechs Zeiger zu. Dies weist nicht sechs Objekte zu. Zwei völlig verschiedene Dinge.