次のシナリオがあります。
SWIG でラップされたクラスA
(破棄時に結合され、独自の Tcl インタープリターを実行している std::thread を含む) Tcl インタープリター プロンプト%
% A a
% a -delete
% exit
上記は問題なく動作します。A a
GDB は、オブジェクト が所有する によって生成されたスレッドa
が停止したことを報告します。
% A a
% exit
上記の結果、基になる C++ クラスのデストラクタが呼び出されず、スレッドが実行され続け、プログラムの終了時に大混乱が発生します (まだ実行中のスレッドでは、その存在が突然失われる準備ができていません)。これはプログラムの終了であるため、問題なくダンディーですが、デストラクタが呼び出されない理由について疑問が残るわけではありません。
SWIG には、後でクリーンアップするように指示するために使用できる設定がありますか?
(この質問は実際にはC++に関するものではないため、意図的にC++でタグ付けされていません...)