c++ - 何时释放 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 移到那里的,但我不确定也不确定这个答案。
解决方案
p 在哪一行被释放?
在声明它的范围的末尾,即在这种情况下的函数 g 。那是当具有自动存储的对象被销毁,并且它们的内存被释放时。
初始化为 42 的具有动态存储的整数将由 f 末尾的 q 的析构函数释放。这是因为搬迁建设转移了所有权。
推荐阅读
- java - 调整要在热敏打印机上打印的图像尺寸
- javascript - 如何更改页面中所有用户个人资料链接的颜色?
- html - 在 RMarkdown 中创建绘图和编织到 HTML 的功能不起作用
- typescript - 如何为 typescript 编译器 (tsc) 设置默认目标 es 版本?
- xamarin.forms - 更新 xamarin.forms 后为 Android 构建失败
- excel - 数据透视表计算字段百分比公式
- android - Gradle 构建成功并在 local.properties 中使用 sdk.dir,但未定义 ANDROID_SDK_ROOT
- python-3.x - 在 Python3 中从 eTrade API 获取报价
- firebase - 获取子集合和子集合中的集合
- lets-encrypt - certbot - /var/lib/letsencrypt/temp_checkpoint 的恢复不完整或失败