コンストラクタが10分の1の確率で例外を投げるようにして
こんなものを作ってみました。
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の途中まで生成された分は破棄されますか?

よろしくお願いします。