设置指向nullptr的指针会影响指向同一地址的其他指针吗?

Dei*_*Dei 0 c++ nullptr c++11

考虑以下函数,如果节点没有子节点,则从二叉搜索树中删除节点:

void erase_no_children(node* todel)
{
    //...
    if (todel->parent->left == todel) //if todel is left child
        todel->parent->left = nullptr;

    if (todel->parent->right == todel) //if todel is right child
        todel->parent->right = nullptr;

    delete todel;
}
Run Code Online (Sandbox Code Playgroud)

因为todel->parent->left == todel这意味着,通过设置todel->parent->leftnullptr,我只是以及设置todelnullptr.编译器根本没有抱怨.

问题:这样做安全吗?它泄漏了吗?还是未定义的行为?

Seb*_*edl 7

因为todel->parent->left == todel这意味着,通过设置todel->parent->leftnullptr,我只是以及设置todelnullptr.

那不对.todel并且todel->parent->left是不同的指针变量; 设置一个nullptr不会影响另一个.

所以你不是删除nullptr(这是安全的和无操作).