Портирование boost :: asio tcp примеров на C ++ 11

Я использую простой tcp сервер из boost :: asio, который можно найти
Вот.

Работает нормально (Boost 1.51, VC ++ 2012).

Но когда я пытаюсь изменить typedef connection_ptr от

typedef boost::shared_ptr<connection> connection_ptr;

в

typedef std::shared_ptr<connection> connection_ptr;

сервер все еще работает, но он падает после завершения соединения. Это происходит в менеджер соединений в методе stop,

Кажется, что удаление Boost shared_ptr работает, но вы не можете удалить STD shared_ptr? почему это так?

0

Решение

относительно вашего комментария

Я удалил это наследство и просто передал новый экземпляр
shared_ptr каждый раз

Не делайте этого, это побеждает цель std::shared_ptr, Вам нужно использовать std::enable_shared_from_this а также shared_from_this() увеличить счетчик ссылок, создав еще один экземпляр shared_ptr с тем же pointee будет просто вызывать проблемы, такие как нарушения доступа к памяти.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru