作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试执行我的项目时遇到段错误。在运行 Btree
类的析构函数的 main 末尾,它调用 Node
类的析构函数。然后在 Word
类的析构函数调用中我得到了错误。并且 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;
关于c++ - 析构函数中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773354/
我是一名优秀的程序员,十分优秀!