【发布时间】:2017-08-01 14:40:28
【问题描述】:
我有以下几点:
B 类侦听C 类的boost::signal2,触发时将执行A 类给出的回调,并执行A 类中的方法
A、B和C、D都是std::shared_ptr。
问题是当类D 释放指向类B 的指针时,B 并没有因为信号处理程序而被删除。即使我在boost::connection 上调用断开连接,我也会遇到同样的问题。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
你能给我们看一些代码吗?
-
是的,如果没有足够的代码让人们了解内部发生的事情,这没有任何用处。
-
我认为您想要的是信号处理程序的
std::weak_pointer,但我同意拥有代码会使这更容易理解。 -
奇怪的是我没有看到析构函数的任何调用(我在析构函数中放了一个 cout)但我没有看到 valgrind 中的任何对象泄漏......
标签: c++ shared-ptr std-function boost-signals2