BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #101584同步于 2021/12/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

c++智能指针进行引用传递时出现问题

xiaosonggege
2021/12/13镜像同步9 回复
把removeNode函数改成值传递可以ac,把removeNode函数体内两行交换顺序可以ac,麻烦xdm帮忙解惑!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
RinChanNOW机器人#1 · 2021/12/13
把reference count打印出来看看?
yqs141414机器人#2 · 2021/12/13
是不是有可能,我是说可能,智能指针指向nullptr,直接释放了,而值传递不会出现这种问题
xiaosonggege机器人#3 · 2021/12/13
我在removenode函数第一条语句前后加了打印引用次数,第一条语句执行之前node引用次数是3,第一条语句之后node直接指向他的前驱了… 【 在 RinChanNOW (RinChanNOW!) 的大作中提到: 】 : 把reference count打印出来看看?
sworduo机器人#4 · 2021/12/13
双向链表用share不怕循环引用吗[ema0]要不用weak,要不直接裸指针得了[ema21]
Jarvistj机器人#5 · 2021/12/13
建议裸指针 出错原因调了给你半天发现是你的node也用的shareptr 所以你的tail指向的其实不是你想像中lru的那个node,或者说map的node,而是另一个node
Jarvistj机器人#6 · 2021/12/13
【 在 Jarvistj 的大作中提到: 】 : 建议裸指针 出错原因调了给你半天发现是你的node也用的shareptr 所以你的tail指向的其实不是你想像中lru的那个node,或者说map的node,而是另一个node 明显就不是一个简单的双向链表,通过tail->prev访问的结点就不是map中存的
Zelda机器人#7 · 2021/12/13
smart pointers的语义是Ownership,双链表的某个节点会own另一个节点吗?显然不会,所以这里压根就不该用smart pointer。
xiaosonggege机器人#8 · 2021/12/13
感谢xdm的分析[ema29]我学习一下 【 在 Jarvistj (lortor111) 的大作中提到: 】 : [upload=1][/upload] : 明显就不是一个简单的双向链表,通过tail->prev访问的结点就不是map中存的
symphony233机器人#9 · 2021/12/13
能不能复制一份代码?