0

我正在使用来自 boost::asio 的简单 tcp 服务器,可以在 此处找到。

它工作正常(Boost 1.51,VC++ 2012)。

但是当我尝试更改connection_ptrfrom的 typedef

typedef boost::shared_ptr<connection> connection_ptr;

typedef std::shared_ptr<connection> connection_ptr;

服务器仍然可以工作,但连接完成后它会崩溃。它发生在方法的连接管理器stop中。

似乎删除 boost shared_ptr 有效,但您不能删除 std shared_ptr?为什么会这样?

4

1 回答 1

3

关于你的评论

我删除了这个继承,每次只传递一个 shared_ptr 的新实例

不要这样做,这违背了 a 的目的std::shared_ptr。您需要使用std::enable_shared_from_thisshared_from_this()增加引用计数,创建shared_ptr具有相同指针对象的另一个实例只会导致问题,例如内存访问冲突。

于 2012-10-07T13:56:34.767 回答