假设一个多重链接列表(或者说,一个带有指向HEAD的额外指针的循环列表),我如何找到哪些指针指向一个节点?
我在几个地方读过,很难找到指向节点的指针数量。这意味着有一种方法,对吗?
答案 0 :(得分:4)
因为C和C ++中的指针只是内存地址,所以对象无法知道指向它的内容。为了确定对象的指针数,您必须:
如果不是使用本机指针,而是使用shared_ptr
,则会在内部为您计算引用数。如果您使用shared_ptr
进行循环引用,则可以将圆圈中的一个指针设为weak_ptr
,其效果类似shared_ptr
,但不计入指针总数 - 因此,循环引用可以正确清理。