Pie*_*sce 1 c++ memory-management smart-pointers unique-ptr c++11
在此代码中:
void f(std::unique_ptr<int> q)
{
}
void g()
{
std::unique_ptr<int> p{new int{42}};
f(std::move(p));
}
Run Code Online (Sandbox Code Playgroud)
p分配在哪一行?我想在f函数的出口处说一下,因为它是使用std :: move移到那里的,但是我不确定对此答案也不确定。
p释放在哪条线上?
p是一个对象,对象可以被破坏。可以释放的是敌人。
当控件离开时(被存储时),p最初分配的内存(由分配new int{42})被释放。fq
p当控制权离开g时,它本身就被销毁(那时候p为空,即没有指向任何东西)。
p分配在哪一行?
在声明它的作用域的末尾,在这种情况下是函数g。那是当具有自动存储的对象被销毁,并且它们的内存被重新分配时。
初始化为42的具有动态存储的整数将由q的析构函数在f的末尾释放。这是因为搬迁工程转移了所有权。
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |