동적할당한 객체를 해제할 때 SIGABRT 에러가 발생합니다.

조회수 29회
BinaryTreeNode& BinaryTree::createTreeNode(const int data) {
    auto* newNode = new BinaryTreeNode(data);
    return *newNode;
}

void BinaryTree::postOrderTravRecur(BinaryTreeNode* pNode, VisitFuncPtr action) {
    if (pNode == nullptr) {
        return;
    }

    postOrderTravRecur(pNode->left, action);
    postOrderTravRecur(pNode->right, action);
    action(pNode);
}

void BinaryTree::deleteAllData(const BinaryTreeNode* pNode) {
    delete pNode;
}

BinaryTree::~BinaryTree() {
    postOrderTravRecur(this->root, BinaryTree::deleteAllData);
}

C++ 클래스를 이용해서 이진 트리를 구현하는 BinaryTree 클래스의 일부입니다.

노드 생성(노드는 BinaryTreeNode라는 별도의 클래스)과 자식 노드 연결은 문제없이 잘 되는데, 후위 순회를 통해 노드들을 삭제하려고 하니 delete pNode; 부분에서 SIGABRT 에러가 발생합니다.

동적 할당은 정상적으로 되었고, 해제 시 에러가 발생할 만한 원인이 안 보이는데 이유를 모르겠네요.

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.