我找不到类似的例子,但是下面是有效的吗?
std::unique_ptr<int> x;
if (true) { // assume some condition here which evaluates to true
int * y = new int(5); // assume a function call here which returns a pointer
x.reset(y);
}
// is x still holding the memory allocated?
// Does it matter that y is out of scope here?
cout << *x << endl; // 5
任何你用new
分配的东西都有一个生命周期,直到它被传递给delete
,或者程序结束(当然)。
变量y
的生命周期以块结束,但不以它所指向的数据结束。
是的,这是完全有效的