当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《设置指向nullptr的指针会影响指向同一地址的其他指针吗?》经验,为你挑选了1个好方法。

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

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;
}

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

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



1> Sebastian Re..:

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

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

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

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有