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

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

但是当我尝试更改connection_ptr的typedef时

typedef boost::shared_ptr<connection> connection_ptr;




typedef std::shared_ptr<connection> connection_ptr;


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

似乎删除助推shared_ptr是可行的,但是您无法删除std shared_ptr?为什么会这样呢?

最佳答案

关于你的评论


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


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

关于c++ - 将boost::asio tcp示例移植到C++ 11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12764071/

10-11 23:01
查看更多