如果原始指针超出作用域,智能指针是否保留分配的内存?



我找不到类似的例子,但是下面是有效的吗?

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的生命周期以块结束,但不以它所指向的数据结束。

是的,这是完全有效的

相关内容

  • 没有找到相关文章

最新更新