C++ FAQから失敗したコンストラクターを読んでいますが、次のコードがわかりません。
void f()
{
X x; ← if X::X() throws, the memory for x itself will not leak
Y* p = new Y(); ← if Y::Y() throws, the memory for *p itself will not leak
}
コンストラクターがスローした場合、 p が指すメモリがリークしない可能性はありますか? シーケンスは次のとおりであると仮定しました。
- オブジェクト Y にメモリが割り当てられます。
- Y のコンストラクターが呼び出されます。
- Y のコンストラクターがスローされ、p が指すメモリがリークします。