空悬挂指针 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;
通过只有一个指针实例并确保它仅通过指向指针实例的引用或指针传递,您可以确保不存在指针的过时副本。
我有一个指向抽象 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;
通过只有一个指针实例并确保它仅通过指向指针实例的引用或指针传递,您可以确保不存在指针的过时副本。