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

Getting segmentation fault when reassigning pointer

本文关键字:分段 错误 指针 新分配 分配      更新时间:2023-10-16

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

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
}

setParent 功能本身没有问题。但您可能从指向TreeNode的无效指针(例如 null/未初始化/已删除指针)调用它

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

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