我正在使用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?为什么会这样呢?
答案 0 :(得分:3)
关于你的评论
我删除了这个继承并简单地传递了一个新的实例 每次都是shared_ptr
不要这样做,这会破坏std::shared_ptr
的目的。您需要使用std::enable_shared_from_this
和shared_from_this()
来增加引用计数,创建具有相同指针的shared_ptr
的另一个实例只会导致问题,例如内存访问冲突。