如何查找指向链表中特定节点的指针数量?

时间:2014-08-25 18:46:12

标签: c++ pointers linked-list nodes

假设一个多重链接列表(或者说,一个带有指向HEAD的额外指针的循环列表),我如何找到哪些指针指向一个节点?

我在几个地方读过,很难找到指向节点的指针数量。这意味着有一种方法,对吗?

1 个答案:

答案 0 :(得分:4)

因为C和C ++中的指针只是内存地址,所以对象无法知道指向它的内容。为了确定对象的指针数,您必须:

  1. 在创建或删除指针时跟踪指针的数量
  2. 搜索这些指针可能位于的所有可能位置,并计算它们。
  3. 如果不是使用本机指针,而是使用shared_ptr,则会在内部为您计算引用数。如果您使用shared_ptr进行循环引用,则可以将圆圈中的一个指针设为weak_ptr,其效果类似shared_ptr,但不计入指针总数 - 因此,循环引用可以正确清理。