2016-04-14 5 views
1

Bu konuda çok fazla sorun yaşıyorum ve bir hata ayıklayıcı üzerinden çalıştırıyorum, ancak yine de sorunu anlayamıyorum. Sıfır olarak başlatılması gereken bir dizi işaretçinin bir üyesine erişmeye çalışmanın neden olduğu bir segmentasyon hatası vardır. Soruna neden olan satır aşağıda. Bu hatanın neden oluştuğuna dair herhangi bir rehberlik çok takdir edilecektir.İşaretçi dizisi neden segmentasyon hatası?

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

Ayrıca, sadece test amacıyla orada olduğumu söylemeliyim, orada olması anlamsız olduğunu anlıyorum – user5932842

cevap

2

Yapıcınız altı gösterici için bir dizi ayırdı.

İlk işaretçi tarafından başvurulan nesneye eriştiniz.

Sorun şu ki, herhangi bir nesne tahsis etmediniz. Altı işaretçiniz başlatılmamış.

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

Bu, altı işaretçi ayırır. Bu altı nesne tahsis etmez. Tamamen farklı iki şey.