ビルドが完了したということで、いざデバッグ実行してみたのですがー…案の定落ちました。(ぉ
namespace を追加しているときに、ちょっとコードを弄くったのでその辺りが影響しているようです。
というのが本題ではなく…
「ふぃふぽん」は環境によって例外がいつ発生するか分からないため、一部を try-catch で囲んでいるのです。今回、丁度そのテストみたいなことが出来ちゃったわけですが、どうも挙動がおかしい。
例外はキャッチしてくれるのですが「例外を発生させているオブジェクトへのポインタを格納しているauto_ptrでメモリリークしてる」とか報告されます。んー?
try { auto_ptr<A> pa(new A); // こいつがリーク pa->Exception(); // 例外がでちゃってる関数 } catch(...) { ごにょごにょ }
auto_ptr ってスコープ抜けるときに自動的に delete してるんじゃないんかい! なんでやねん!
…と思ったら、A::~A() で再度例外が発生してました。_| ̄|○
そりゃー機嫌悪くなるわなぁ。
例外中に例外はマズイとか、デストラクタから例外を放出しちゃーいけないと、More Effective C++ で勉強させて頂きましたが……実際体験してみると、よく理解できるもんですなー。
しかしー、どう対処しようかなぁ。この問題…。