次の構成が表示されます。
new X
X
コンストラクターがスローした場合、メモリを解放します。operator new()
過負荷になる可能性があります。
演算子 new オーバーロードの標準的な定義はvoid *operator new(size_t c, heap h)
、対応するoperator delete
.
最も一般的な演算子 new のオーバーロードは、placement new です。void *operator new(void *p) { return p; }
ほとんどの場合delete
、placement に指定されたポインターを呼び出すことはできませんnew
。
これは 1 つの疑問につながります:X
コンストラクターがスローし、オーバーロードnew
が使用された場合、メモリはどのようにクリーンアップされますか?