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

C++ 将boost::asio tcp示例移植到C++;11,c++,boost,c++11,visual-studio-2012,boost-asio,C++,Boost,C++11,Visual Studio 2012,Boost Asio,我使用的是boost::asio中的一个简单tcp服务器,可以找到 它运行良好(Boost1.51,VC++2012) 但是当我试图将连接的typedef\u ptr从 typedef boost::shared_ptr<connection> connection_ptr; typedef boost::共享连接\u ptr; 到 typedef std::共享连接\u ptr; 服务器仍然工作,但在连接完成后崩溃。它发生在方法stop中 看起来删除boost shared

我使用的是boost::asio中的一个简单tcp服务器,可以找到

它运行良好(Boost1.51,VC++2012)

但是当我试图将
连接的typedef\u ptr

typedef boost::shared_ptr<connection> connection_ptr;
typedef boost::共享连接\u ptr;

typedef std::共享连接\u ptr;
服务器仍然工作,但在连接完成后崩溃。它发生在方法
stop

看起来删除boost shared_ptr是可行的,但是您不能删除std shared_ptr吗?为什么会这样?关于你的评论


我删除了这个继承,只是传递了一个 每次共享\u ptr

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

关于您的评论


我删除了这个继承,只是传递了一个 每次共享\u ptr


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

您是否也继承了
std::enable_shared_from_this
而不是
connection
中的boost版本?我不知道这种特殊情况,但通常VC11中对C++11的支持仍然非常有限,我已经看到了一些bug,而且boost 1.51还没有为VC11正确配置。因此,我通常会暂缓用C++11替换boost结构。事实上,我已经在我们的代码库中使用了std::tr1和boost提供的回退,并且由于编译器的差异和VC11的最后更改,逐步切换到显式boost。我删除了这个继承,只需每次传递一个新的shared_ptr实例,即您正在创建几个shared_ptr来管理同一对象的生命周期。或者崩溃中的消息是什么?您是否也继承了
std::enable_shared__from_this
而不是
connection
中的boost版本?我不知道这个特殊情况,但一般来说,VC11中对C++11的支持仍然非常有限,我已经看到了一些bug,而且boost 1.51还没有为VC11正确配置。因此,我通常会暂缓用C++11替换boost结构。事实上,我已经在我们的代码库中使用了std::tr1和boost提供的回退,并且由于编译器的差异和VC11的最后更改,逐步切换到显式boost。我删除了这个继承,只需每次传递一个新的shared_ptr实例,即您正在创建几个shared_ptr来管理同一对象的生命周期。或者坠机事件中的信息是什么?
typedef std::shared_ptr<connection> connection_ptr;