프로젝트를 실행할 때 세그먼트 화 오류가 발생합니다. 메인의 끝에서 Btree
클래스의 소멸자가 실행되면 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(){};
};
배열이 아닌 포인터에 대해 delete []를 원합니까? 아니면 배열입니까? – Linuxios
필드'std :: vector 루트를 선언하지 않는 이유는 무엇입니까 '??? –
'valgrind'와'gdb'를 사용하여 코드를 디버깅 했습니까?'g ++ -Wall -g'로 컴파일 했습니까? (리눅스를 사용한다고 가정) ?? –