空悬挂指针 C++

Null dangling pointers c++

我有一个指向抽象 class 对象 ptr1 的指针。我需要创建另一个具有相同地址 ptr2 的指针,以便当您释放 ptr1 指针并将其归零时,ptr2 也变为零。

SomeObject* ptr1 = new SomeObject();
SomeObject* ptr2 = ptr1;

delete ptr1;
ptr1 = nullptr; // after that ptr2 should be nullptr

我知道这是悬空指针问题,可以用智能指针解决,但我想不用它们来解决。预先感谢您的帮助!

ptr2 声明为对 ptr1 的引用或指针,即以下之一:

SomeObject* &ptr2 = ptr1;
SomeObject** ptr2 = &ptr1;

通过只有一个指针实例并确保它仅通过指向指针实例的引用或指针传递,您可以确保不存在指针的过时副本。