VC2008
WIN32プロジェクト
すいません。初歩的な質問かもしれませんがお願いします。
ステップ実行で試しています。
関数Funk()で宣言したクラス
Test t;
はFunk()終了後に~Testに入るのが確認できます。
Main()でTest t;とした場合、~Testには入ってこないのですが、それはMain自体が終了して入ってこないだけで、実際は処理されているのでしょうか?
abortしたり,longjmpで抜け出したりしたりしていない限り,デストラクタは実行されます。
どのようなコードで確認されたのでしょうか。
ごめんなさい。自分の確認不足でした。
例外のエラーでおちてしまい終了した場合にはいっていなかったようです。
正常終了であれば問題ありませんでした。
異常終了した場合はこの場合作成したTest tはどうなるのでしょうか?
C++の例外であれば,デストラクタは実行されます。
範囲外参照等であれば,デストラクタは実行されないでしょう。
異常終了したのであれば,そもそもプロセスが終了するわけですから,
Test tはメモリごとシステムによって回収されます。
当然,システム管理下リソースはシステムが面倒を見てくれますが,リソース回収以上のことはしてくれません。
# TCP/IPでの行儀の良いクローズ等
ツイート | ![]() |