我正在使用来自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_this
和shared_from_this()
来增加引用计数,使用相同的指针创建shared_ptr
的另一个实例只会引起问题,例如内存访问冲突。
关于c++ - 将boost::asio tcp示例移植到C++ 11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12764071/