如果像这样初始化一个
但是在
当作用域结束时,析构函数肯定会被调用。由于
这就是发生的吗?
unique_ptr
:std::unique_ptr<Foo> i;
i.reset( new Foo() );
但是在
Foo::Foo()
中抛出异常,问题是:分配的内存会发生什么?unique_ptr如何避免内存泄漏?这个问题是在new
操作符内部处理的吗?当作用域结束时,析构函数肯定会被调用。由于
reset
调用直到new Foo()
返回才被调用,似乎必须由new
来处理,在构造函数引发异常时释放已分配的内存。这就是发生的吗?