c++ - 何时释放 unique_ptr?

标签 c++ c++11 memory-management smart-pointers unique-ptr

在这段代码中:

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/

相关文章:

c++ - Linux 与 Mac OSX 上使用 clang 的编译时间

c++ - 如何在编译时使用手动给定的一些元素初始化数组?

java - Android服务占用大量内存

c++ - 一次读取 4 个字节

C++0x lambda + boost::function 问题

c++ - 计算矩阵的行列式时内存泄漏

C++ Valgrind 错误包括 "Invalid write of size 8",但没有内存泄漏

c++ - 如何在现代 C++ 中有效地为指向虚拟基类的指针 vector 分配空间

c++ - Qt QDialog 问题 : QLineEdit Will Not Take Input

c++ - 在 C++ 中标记字符串的最佳方法是什么?