c++ builder / TThread > TThread終了時にポインタをNULLにする > OnTerminate ()処理でexternポインタにNULLをセットする


動作確認
C++ Builder XE4

TThreadでインスタンシエートした処理が何かの理由で終了した時、そのポインタ(例: TThread* ThrPtr)はNULLにならない。
そのため、ThrPtrを保持する処理からはThrPtrが終了してしまっているかはわからない。

検索したところ、NULLを設定する方法を提案している例が見つかった。

answered Apr 4 '13 at 20:34 by Remy Lebeau
によるコードが参考になる。

  • extern TMyThread *MyThread;をTMyThread のヘッダーで宣言しておく

  • OnTerminate ()処理にてMyThread = NULL;を実行する



extern宣言すると、コードの依存性が生まれる。

OnTerminate()にてインスタンス作成元のSetterを呼ぶようにしてフラグ