OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2286|回复: 2

lglv切换页面,造成栈溢出或者内存泄漏

[复制链接]

22

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2019-11-10
在线时间
61 小时
发表于 2023-12-23 19:17:09 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 woshi520laoxie 于 2023-12-25 11:25 编辑

使用lvgl 8.3版本
使用情况:

2.1、弄了几个页面
2.2、多个页面跳转,由于页面与页面的调用都会使用到lv_obj_create,开辟堆区的空间
     icon_cont_left = lv_obj_create(tab_left);
2.3、如果多次调用那么会造成内存重复开辟,然后堆浪费掉,没有回收,最终堆使用完毕,无法再使用
2.4、我也不能创建之后就立马clean掉,因为obj还绑定了回调函数,需要在按下按钮的时候做一些操作
---》这种情况下会造成内存持续增加

3.1、几个页面
3.2、每次切换页面的时候,我就调用 lv_obj_clean(lv_scr_act());// 清除整个对象的数据
3.3、这种情况,查看内存没有持续增加了,但是重复多几次之后,就会出现段错误

网上看了一些,有说是style的原因,不过style开启的内存不多,应该不是这个原因,我也试过只初始化一次
所以有朋友使用过lgvl的吗?你们多个页面是怎么操作的呢

4.1、我也有一些想法,就是开启多个页面,只初始化一次,有一些页面不用了,我就隐藏掉,但是我觉得这样会造成内存的浪费
4.2、所以还是选择关闭页面了就把该释放的内存释放掉的好,因为我有一些页面,使用了很大的图片背景,很费内存的
***********小结**************:
》》提问:如何能够多个页面切换的同时,也可以安全稳定的把该释放的内存全都释放掉呢。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
955
金钱
955
注册时间
2022-7-21
在线时间
446 小时
发表于 2023-12-24 14:59:59 | 显示全部楼层
帮顶,感觉这种一旦用到了比较大的图片做背景的都没啥好的方案
回复

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10540
金钱
10540
注册时间
2017-2-18
在线时间
1908 小时
发表于 2024-1-10 09:14:03 | 显示全部楼层
按照状态机思想写页面管理会大大降低页面跳转所带来的一系列bug.
如果不上页面管理,我是在进行页面跳转时只创建一次新页面,创建完成后标记相关的变量,在删除老界面的时候加lv_obj_is_valid()判断是否为有效控件
,防止在删除无效控件带来的系统死机问题。

图片占用内存太大,该删除还是得删除
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 04:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表