スレを勃てるまでもないC/C++の質問はここで 13
■ このスレッドは過去ログ倉庫に格納されています
0322デフォルトの名無しさん
2010/02/05(金) 21:37:35こんなものを作ってみました。
ttp://codepad.org/1Uf0BQ68
1.
この
{
boost::shared_ptr<MyClass> p1(new MyClass);
boost::shared_ptr<MyClass> p2(new MyClass);
boost::shared_ptr<MyClass> p3(new MyClass);
boost::shared_ptr<MyClass> p4(new MyClass);
}
の部分で、(例えば)3つ目を生成する時に例外が発生した場合、
p1やp2のデストラクタは呼ばれていないのでしょうか?
私の環境で実行すると
ttp://uploader.rgr.jp/src/up1887.jpg
こんなことになりました。
それとも「実はデストラクタは呼ばれているが画面に反映されていない」だけでしょうか?
2.
また
boost::shared_array<MyClass> p(new MyClass[4]);
で失敗(例外を投げた)した場合は、p1〜p4は既に前のスコープを脱出する段階で
正常に破棄されているのでリソース漏れは無いと思うのですが、
pの途中まで生成された分は破棄されますか?
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています