我正在阅读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 指向的内存泄漏。