这个是一个很低级的错误,之前po主急着完成任务,也是没注意看,窗口跳窗如下图所示:

Qt 【关于跳转页面后当前页面(委托delegate)数据丢失的问题】-LMLPHP

这个过程中都是click促发槽然后B*pB,pB->show,同理A*pA,pA->show,这个过程中就出现了内存泄露,因为窗口是不停的new然后show,

就算当前是有数据的,但是new出了新窗口,旧的没有了,即旧的数据没有存在新的窗口上,因为嵌入式开发板子的内存不是很大,如果用长久时间,

这样的算法肯定炸了,下图是5分钟前后内存使用对比:

5分钟之前:Qt 【关于跳转页面后当前页面(委托delegate)数据丢失的问题】-LMLPHP

5分钟之后:Qt 【关于跳转页面后当前页面(委托delegate)数据丢失的问题】-LMLPHP

本身板子内存就不是很大,例如1G,五分钟吃100MB,暂且不说说句丢失【就算你保存文本然后在读取去解决】用不了一个小时,这个机器就因

内存耗尽而死机从而影响用户体验。

解决办法:

Qt 【关于跳转页面后当前页面(委托delegate)数据丢失的问题】-LMLPHP

不用new出新指针,灵活去使用show跟hide,并且在析构函数中判断下,之前窗口的指针是否存在,存在就delete,以防内存泄露,初始化NULL。

所以这个需要多注意,不能由于急救忘记了这些重要的东西,虽然po主经常忘事。.......

技术在于交流,经验在于分享...来自流若浅。

05-27 18:29