你这段代码没有这个问题。不过考虑这样的代码:
class MyMainWindow: public QMainWindow {
public:
MyMainWindow()
: ui(new Ui::MyMainWindow()) {
QFileSystemModel model;
connect(ui->button, SIGNAL(clicked()), [&] { model.reset(); });
}
private:
Ui::MyMainWindow *ui;
};
这是会崩溃的代码,因为 model 在栈里面,退出 MyMainWindow 构造函数以后就销毁了。当你点下按钮时,lambda 里面的 model 就是野指针。
我故意把这段代码写错。还有很多情况,比如你传了 lambda 给线程,线程还在运行的时候引用的变量在主线程里面被销毁了。或者其它销毁对象的情况。lambda 都会崩溃。
【 在 Daimon (天行健,君子以自强不息) 的大作中提到: 】
: "尤其是 &,经常会引发野指针访问崩溃"
: 这句话怎么理解呢?
--
FROM 183.253.23.*