下面的代码什么时候发生内存释放?
#include <memory>
int main()
{
auto p = std::make_shared<int>(5);
std::weak_ptr<int> wp = p;
p = nullptr;
return wp.lock() == nullptr ? 0 : 1;
}
Run Code Online (Sandbox Code Playgroud)
如下从这篇文章 std::make_shared执行一个堆分配。这是否意味着在至少有一个std::weak_ptr存活之前,内存不能被释放?
(由于我没有正确阅读问题,因此必须编辑答案)。
是的,内存本身将在您的代码片段中,因为您已经通过make_shared调用为控制块和对象分配了一个块。
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |