#include<bits/stdc++.h>
using namespace std;
function<void()> func;
int *c;
void a() {
int b=3;
c=&b;
func=[&](){cout << b << ' ';};
}
int main() {
a();
func();
cout << (*c) << ' ';
func();
cout << (*c) << ' ';
return 0;
}
rt,在我的电脑上,前两个输出为 3,后两个输出为相同的两个随机三位数,在洛谷上后两个为 0
这个输出和 C++ 的垃圾回收(姑且叫这个吧,就是局部变量的销毁)机制有何关联呢?std::function 的运作原理又是什么?lambda 表达式的引用在什么情况下是安全的呢?