当前位置: 首页 > news >正文

lvgl 9.3 style使用导致内存泄漏问题

lvgl切换界面的时候发屏内存泄漏的问题,

打开自带的内存占用显示的控件,占用的内存一直变大
使用官方自带的PC模拟器,输出内存使用情况下,确实存在内存占用越来越大的情况
串口输出时free的空间在逐渐变小

异常输出信息

memory_leak

定位

刚开始以为是创建跟销毁界面时,需要调用create跟delete这样的接口,这些接口存在,申请内存跟释放内存的操作,可能是哪里申请与释放没有对应上,导致内存泄漏
使用lv_style_t这个style样式,修改显示效果的时候,处理不当会引起内存泄漏
在对BUTTON进行,style设置的时候,需要销毁界面的时候,会将create的BUTTON删除掉,但却没有对style添加的参数进行删除,导致内存泄漏

  static lv_style_t s_focus;lv_style_init(&s_focus);lv_style_set_bg_color(&s_focus, lv_color_hex(0x00ff00));

只要调用了lv_style_set_xx_xx这样的接口,就会申请内存
这个lv_realloc可能就是一个新的内存申请操作
0e6cc2db-f8fe-4d2b-9aba-dd4fbb26289a

处理方式

需要在销毁界面的时,需要将设置的sytle变量,进行reset,来达到释放内存的效果。 否则内存就一直在被占用,而没有释放

	lv_style_reset(&s_focus);

lv_style_reset有相应的释放内存的操作
1db8a977-5a29-416a-8cf6-0bc78516420c

正常输出信息

memory_no_leak

信息输出大致DEMO代码

static void print_mem_status(void)
{lv_mem_monitor_t mon;lv_mem_monitor(&mon);printf("[MEM] free:%lu  used:%lu  max_used:%lu  frag:%d%%\n",(unsigned long)mon.free_size,(unsigned long)(mon.total_size - mon.free_size),(unsigned long)mon.max_used,mon.frag_pct);
}/* 切换界面的定时器回调 */
static void switch_cb(lv_timer_t * t)
{switch_cnt++;if(switch_cnt % 2 == 0) {view_switch(1);} else {view_switch(2);}/* 每次切换后打印一次内存状态 */print_mem_status();
}/* 初始化 demo */
void lv_demo_mem_monitor(void)
{view_switch(1);switch_timer = lv_timer_create(switch_cb, 500, NULL);/* 打印初始状态 */print_mem_status();
}

参考

lvgl中存在的内存泄漏问题

http://www.rkmt.cn/news/11725.html

相关文章:

  • king3399 编译报错
  • 11_Reactor网络模型
  • 「LNOI2022」盒
  • Android 源码中如何生成一个platform JKS 文件?
  • 后端面试八股(go 方向)
  • 分布式数据库迁移OceanBase——基于网易云音乐自研CDC服务的平滑迁移方案
  • 第13章 day14-15 Webpack逆向
  • Viper远程配置踩坑记录
  • 国产智能体脂秤PCBA方案设计
  • 第21章 Day25 抖音最新ab
  • 【cv】cycleGAN代码解析:test.py
  • 第20章 Day24 原型链
  • redis实现定期关单
  • 详细介绍:5G nr频段_5g哪个信道信号强
  • trae 配置mysql_mcp
  • 【cv】cycleGAN代码解析:train.py
  • 深入解析:李宏毅2023机器学习作业 HW01实操
  • 自定义制作docker容器自动自愈容器镜像
  • 如何利用海外 NetNut 网络代理与 AICoding 实战获取 iPhone 17 新品用户评论数据?
  • 第一次编码器测试
  • 04-FreeRTOS的概述及编程规范
  • Linux安装Kafka(无Zookeeper模式)保姆级教程,云服务器安装部署,Windows内存不够允许看看
  • 实用指南:在 CentOS 中安装 MySQL
  • 卫星时间同步平台:助力分布式测控系统同步工作
  • C# Avalonia 15- Animation- Easing
  • CyberLink ColorDirector Ultra 2026 14.0.5712.0 视频后期调色
  • CF 1053 Div.2
  • haproxy负载均衡 - 详解
  • 豆油
  • linux shell awk 中括号 方括号 分割 []