[英]Segmentation fault in destructor
嘗試執行項目時出現分段錯誤。 在main的運行Btree
類的析構函數的末尾,它將調用Node
類的析構函數。 然后在Word
類的析構函數調用中得到錯誤。 然后list.tcc
打開(~Btree -> ~Node() -> ~Word() (error): list.tcc:)
list.tcc
(~Btree -> ~Node() -> ~Word() (error): list.tcc:)
list.tcc
(~Btree -> ~Node() -> ~Word() (error): list.tcc:)
游標在此行中給出錯誤:
list.tcc:
_Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next);
是此錯誤的原因在Word
類中的列表嗎?
班級代碼縮寫如下:
class Btree{
private:
...
Node *root;
...
public:...
~Btree(){delete[] root;};
};
class Node{
...
Word *words;
Node **children;
...
~Node(){delete [] words; delete []children;};
};
class Word{
public:
string word;
list<Couple> couple;
Word(){};
~Word(){};
};
class Couple{
...
public:
....
~Couple(){};
};
您是如何分配root
? 我個人的猜測是,您使用
root = new Node();
如果嘗試將非數組對象分配為數組對象,則會得到未定義的行為。 實際上,它會在節點開始之前使用“單詞”一詞,並假定它是元素計數,並銷毀該數量的元素。 由於只有一個,這必然不能很好地工作。 你可能想要
delete root;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.