【发布时间】:2014-10-16 03:20:29
【问题描述】:
如果我通过调用 fun1() 赋值,lambda 外部的 x 变量将被破坏(无法读取内存),但如果我运行 fun2() 一切都很好。为什么?指针的副本仍然指向同一件事吗?那为什么 fun1() 不起作用?
int *x = NULL;
auto fun1 = [x]() mutable
{
x = new int(5);
};
auto fun2 = [&x]()
{
x = new int(5);
};
【问题讨论】:
-
复制的第一个捕获
-
这与 lambdas 无关。尝试使用普通的旧函数并查看。
-
那么为什么指针的副本不指向同一个东西呢?
-
因为它是指针的本地副本。