重新分配指针时出现分段错误

时间:2015-06-11 07:23:43

标签: c++ pointers

这是导致错误的大型代码片段:

Class TreeNode {
private:
    int level;
    TreeNode* parentNode;
public:
    TreeNode() {
        level = 0;
        parentNode = NULL;
    }

    void setParent (TreeNode* n) {
        parentNode = n; // <- this reassignment is causing segmentation fault
    }
}

如何正确地重新指定指针变量parentNode

由于@galinette试图指出它,我可能从空指针调用了setParent。但是,我事先以这种方式检查它:

if (candidateChild != NULL) {
    candidateChild -> setParent(this); // <- I checked that both this and candidatChild are not NULL
}

2 个答案:

答案 0 :(得分:3)

setParent功能本身没有问题。但是你可能从指向TreeNode的无效指针(例如null / uninitialized / deleted指针)调用它

您的代码有效,错误来自您未发布的其他部分。

答案 1 :(得分:-2)

您必须使用TreeNode** parentNode作为私人字段,并使用*parentNode=&n进行分配。