将boost :: asio tcp示例移植到C ++ 11

时间:2012-10-06 21:32:57

标签: c++ boost c++11 visual-studio-2012 boost-asio

我正在使用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中。

似乎删除了一个boost shared_ptr,但你不能删除一个std shared_ptr?为什么会这样呢?

1 个答案:

答案 0 :(得分:3)

关于你的评论

  

我删除了这个继承并简单地传递了一个新的实例   每次都是shared_ptr

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