0

私はboost::asioの単純なtcpサーバーを使用しています。これは ここにあります。

正常に動作します(Boost 1.51、VC ++ 2012)。

しかし、connection_ptrからのtypedefを変更しようとすると

typedef boost::shared_ptr<connection> connection_ptr;

typedef std::shared_ptr<connection> connection_ptr;

サーバーは引き続き機能しますが、接続が完了するとクラッシュします。これは、メソッドの接続マネージャーで発生しますstop

ブーストshared_ptrを削除することは機能しているようですが、std shared_ptrを削除することはできませんか?なぜそうなるのでしょうか?

4

1 に答える 1

3

あなたのコメントについて

この継承を削除し、毎回 shared_ptr の新しいインスタンスを渡すだけです

これをしないでください。これは a の目的を無効にしますstd::shared_ptrstd::enable_shared_from_thisと を使用しshared_from_this()て参照カウントをインクリメントする必要がありますshared_ptr。同じポインティを持つ の別のインスタンスを作成すると、メモリ アクセス違反などの問題が発生します。

于 2012-10-07T13:56:34.767 に答える