Poco C++ライブラリを使用していて、奇妙な問題が発生しています。 独自の共有ポインタクラスを使用するPoco SharedPtr
内部ポインタ操作用。私の場合、静的オブジェクトPoco::SSLManager
には、SharedPtr
の証明書Handlersオブジェクトのメンバーがあります。プログラムの実行が終了すると、静的オブジェクトが削除され、セグメント化エラーが発生します。 GDBデバッガを使用していますが、コアダンプが表示されていますが、問題は理解できません。 SharedPtr
オブジェクト(簡易操作:delete pObj
)を削除するとSegフォルトが発生しますが、オブジェクトには有効なアドレスがあります(例:0x8fcbed8
)。有効なアドレスを持つC++削除ポインタ
なぜ有効なアドレスを持つポインタを削除すると、セグメンテーションフォルトが発生する可能性がありますか?
オブジェクトがアプリケーションのフォークコピーに作成され、メインで破棄される可能性がありますか?
オブジェクトポインタを削除する前に、nullポインタと削除後の操作がnullに設定されていることを確認しました。 – Reddy
SharedPtrには通常 'ptr-> Release()'関数があります。それをチェックしてください。 – Gasim
@Reddy: 'null'ポインタで何もしないことが定義されているので、' delete'を呼び出す前に 'null'をチェックしないでください。 – Puppy