删除存储了多个引用的指针

deleting pointers with multiple references stored

本文关键字:引用 指针 存储 删除      更新时间:2023-10-16

我在程序中的一个位置通过new创建对象(让我们称它们为actor)。这些对象通过指针传递给另一个对象(我们称之为抛射体)。在任何时候,演员对象都可以在抛射体之外删除。删除并设置为NULL。然而,它的一个指针仍然在炮弹中。我检查一下NULL,但它通过了这些检查。类中的值都是假的,但指针本身不是NULL。

我需要做一个指向指针的指针或其他什么吗?我只是想,如果我传递了一个指针,在某个时候删除了它,并将该指针设置为NULL,那么我传递的所有其他地方也会显示为NULL。

您可能应该研究智能指针,如std::shared_ptr

你想过双重间接寻址吗?

  1. 使用Actors:std::map<unsigned, Actor>的映射
  2. 仅在射弹中存储Actor ID

现在,假设一个单调增加的ID(你有大约40亿个可用的ID,应该会让你坚持一段时间),一个ID不在地图上意味着Actor消失了(被删除了)。