用Qt写了一个极简单的小程序:生成一个Qmainwindow程序框架,有ui。然后添加一个qvboxlayout。在构造函数里,new qlabel添加到qvboxlayout,在resizeevent亊件里使用qlabel。
构建运行!
崩溃。
why?
在事件函数里添加一个static int记录次数,用qlabel显示它。再构建运行再崩溃。
在事件函数里,if(qlabel),运行起来了。开始显示于N多次,迅速涨到几十万次。期间我啥也没干。程序真勤快呀。
在并行的世界里,我总以为先运行完构造函数,然后才有resizeevent,保持线性思维,太想当然了,程序不崩溃全靠天意呀!
1如何保证资源初始化部分先行完成?
2这种保证,有保障吗?
3事件如何发生于实际交互要求之后?不可能的,系统是主动查询式。
简单搞复杂了,玩大发了。
我还是防御性编程吧!
不要想当然,在计算机的世界里,在真实的世界里,和生活中。