我正在使用来自 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;
服务器仍然工作,但在连接完成后崩溃。它发生在 connection manager在方法 stop
中。
似乎删除 boost shared_ptr 是可行的,但是你不能删除 std shared_ptr 吗?为什么会这样?
最佳答案
关于你的评论
I removed this inheritance and simply pass a new instance of shared_ptr each time
不要这样做,这违背了 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/