MSDNによると:
__leave ステートメントは、スタックの巻き戻しを引き起こさないため、より効率的です。
私の理解では、「このような一般的なコード スニペットは危険です!」ということです。
struct A
{
int* p;
A() : p(new int) {}
~A() { delete p; }
};
void f()
{
__try
{
A a;
... // Doing somthing
if (the thing has gone bad) __leave;
... // Continue
}
__finally
{}
}
C++ プロジェクトで __leave を完全に避けるのがベスト プラクティスですか?