【初心者歓迎】C/C++室 Ver.48【環境依存OK】at TECH【初心者歓迎】C/C++室 Ver.48【環境依存OK】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト765:デフォルトの名無しさん 08/02/16 12:43:32 auto_ptrについて質問です。 以下のコードを実行したとき、throw(②)のあとで TTestクラスのデストラクタが呼び出されると思っていたのですが呼び出されません。 auto_ptrってこういうものなのでしょうか? TTest* TTest::NewL() { std::auto_ptr<TTest> self(new TTest()); throw 1; // ② return self.release(); } 766:デフォルトの名無しさん 08/02/16 12:47:54 例外を投げた際、デストラクタが呼ばれるのは例外が捕捉された時。 例外が捕捉されなければ呼ばれないかもしれない(環境依存)。 auto_ptr の問題じゃなくて、C++ の仕様の問題。 767:デフォルトの名無しさん 08/02/16 12:48:27 >>765 catchしたか 768:765 08/02/16 12:53:01 すみません、catchしたかどうかが重要とは知らず書いてませんでしたが、catchはしています。 ちなみに、std::auto_ptrの部分を自作のsmart_ptr(スマートポインタの解説サイトを参考に作成) にした場合はきちんとデストラクタが呼ばれました。 コンパイラはBorland C++ Compiler 5.82 なのですが、これのauto_ptrがポンコツなのかも… 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch