如果unique_ptr
像这样初始化:
std::unique_ptr<Foo> i;
i.reset( new Foo() );
但是从 抛出异常Foo::Foo()
,问题是:分配的内存会发生什么?unique_ptr 如何避免泄露?这是在操作员内部处理的事情new
吗?
当作用域退出时,析构函数肯定会被调用。由于在返回reset
之前不会调用调用new Foo()
,因此似乎必须通过new
在异常离开构造函数时释放分配的内存来处理此问题。
是这样吗?
如果unique_ptr
像这样初始化:
std::unique_ptr<Foo> i;
i.reset( new Foo() );
但是从 抛出异常Foo::Foo()
,问题是:分配的内存会发生什么?unique_ptr 如何避免泄露?这是在操作员内部处理的事情new
吗?
当作用域退出时,析构函数肯定会被调用。由于在返回reset
之前不会调用调用new Foo()
,因此似乎必须通过new
在异常离开构造函数时释放分配的内存来处理此问题。
是这样吗?