gpt4 book ai didi

c++ - 何时释放 unique_ptr?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:37 25 4
gpt4 key购买 nike

在这段代码中:

void f(std::unique_ptr<int> q)
{
}

void g()
{
std::unique_ptr<int> p{new int{42}};
f(std::move(p));
}

p 在哪一行被释放?我会在 f 函数的导出处说,因为它是使用 std::move 移动到那里的,但我不确定也不相信这个答案。

最佳答案

At which line p is deallocated?

在声明它的作用域的末尾,即本例中的函数 g。那是当具有自动存储的对象被销毁,并且它们的内存被释放时。

你初始化为 42 的动态存储整数将在 f 的末尾被 q 的析构函数释放。这是因为移动构造转移了所有权。

关于c++ - 何时释放 unique_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58234814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com