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

news/2025/9/25 17:43:27/文章来源:https://www.cnblogs.com/stupidpeng/p/19107605

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.mzph.cn/news/917320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI领域】如何写好Prompt提示词:从新手到进阶的完整指南 - 详解

【AI领域】如何写好Prompt提示词:从新手到进阶的完整指南 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

洛阳制作网站的公司网站目录遍历

文章目录 Monitorjava对象头Monitor(锁、管程) Monitor java对象头 普通对象 Mark Word 主要用来存储对象自身的运行时数据、klass word就是指向该对象的类型。 数组对象 mark word 不同对象状态下结构和含义不同。 Monitor(锁、管…

king3399 编译报错

king3399 编译报错king3399编译教程 ./build.sh kernel报错信息 ERROR: Running /mnt/d/king3399/linux-5.10/device/rockchip/common/build-hooks/10-kernel.sh - run_command failed! ERROR: exit code 2 from line …

实用指南:uniapp x鸿蒙开发之运行到鸿蒙模拟器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Redis 监听过期Key - 指南

Redis 监听过期Key - 指南2025-09-25 17:34 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

11_Reactor网络模型

一、Reactor模型基本原理 Reactor模型是一种基于事件驱动的设计模式,特别适合处理高并发的I/O密集型应用。Reactor模型的核心思想很简单,但又很巧妙,它围绕着"事件"展开。不同于传统模型中线程主动等待I/…

花卉网站建设策划方案做的比较好看的网站

一、引入方式 JavaScript 程序不能独立运行&#xff0c;它需要被嵌入 HTML 中&#xff0c;然后浏览器才能执行 JavaScript 代码。通过 script 标签将 JavaScript 代码引入到 HTML 中 1️⃣内部 通过 script 标签包裹 JavaScript 代码&#xff08;一般就写在</script>的…

「LNOI2022」盒

🦁🦁🦁🦁🦁🦁🦁🦁🦁我要把你开盒挂网上。我们定义一波: \(s_i = \sum_{j = 1}^{i} a_j\) 那我们确定 \(b\) 后,答案是好算的,我们用 \(z_i\) 表示 \(b\) 的前缀和,就有: \[ans_b = \sum_{i = 1…

【文摘随笔】从业开发工作五年后,再读短篇《孔乙己》——年少不懂孔乙己,长大已成孔乙己

再读《孔乙己》对我而言有太多理由,*鲁迅*、*周树人* 作为网络 meme 已经过去了 7 年,但我的起点是人们越发的使用“脱不掉的长衫”和“孔乙己”来讽刺一个角色、一种现象。 中学时全文背诵的课文竟是一点没有印象,…

为什么我选择了 PSM 敏捷认证?

PSM考试优惠码:4DBC2DE748最近身边不少朋友问我: “敏捷证书这么多,你为什么选了 PSM(Professional Scrum Master)?” 今天就来聊聊我自己的感受,或许对你也有参考价值~ 💡 PSM 解决了我职业发展的几个痛点 …

宫廷计有哪些网站开发的页面跳转的方法

简介&#xff1a; Loki是受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。用户既可以将Loki告警直接接入SLS开放告警&#xff0c;也可以先将Loki接入Grafana或Alert Manager&#xff0c;再借助Grafana或Alert Manager实现Loki间接接入SLS开放告警。 直接接入 您可…

app开发与网站开发的区别建设工程自学网站

jenkins复制作业您可能知道&#xff0c;Jenkins是高度可配置的CI服务器。 我们可以设置不同的自定义构建过程。 我将分享一些我用来设置詹金斯工作层次的方法。 这是用例&#xff1a; 我们有一个主要的入口工作被调用以启动整个构建过程。 这项工作可以有一个到多个子工作。 …

Hive SQL - INSERT

Hive SQL - INSERT INSERT INTO TABLE zzh_test VALUES (1, 1,1. AAA), (2, 2.2, BBB);INSERT OVERWRITE TABLE zzh_test SELECT * FROM zzh_test; INSERT INTO zzh_test VALUES (1, 1,1. AAA), (2, 2.2, BBB);INSERT …

石家庄房和城乡建设部网站网站建设属于设备吗

打算刷一遍nssweb题&#xff08;任重道远&#xff09; 前面很简单 都是签到题 这里主要记录一下没想到的题目 [GDOUCTF 2023]hate eat snake 这里 是对js的处理 有弹窗 说明可能存在 alert 我们去看看js 这里进行了判断 如果 getScore>-0x1e9* 我们结合上面 我觉得是6…

建站点wordpress 全局字段

文章目录 一、序二、机械硬盘和固态硬盘的物理结构与工作原理2.1 机械硬盘2.11 基本结构2.12 工作原理 2.2 固态硬盘2.21 基本结构2.22 工作原理 三、机械硬盘和固态硬盘的垃圾回收机制3.1 机械硬盘GC3.2 固态硬盘GC3.3 TRIM指令开启和关闭 四、做好数据备份 一、序 周末电脑突…

网站开发如何设置视频教程设计美观网站有哪些

编者按 伏羲&#xff08;Fuxi&#xff09;是十年前最初创立飞天平台时的三大服务之一&#xff08;分布式存储 Pangu&#xff0c;分布式计算 MaxCompute&#xff0c;分布式调度 Fuxi&#xff09;&#xff0c;当时的设计初衷是为了解决大规模分布式资源的调度问题&#xff08;本…

大庆建设银行网站首页网站怎么容易被百度收录

数据持久化到Flash 文章目录 数据持久化到Flash1、Preferences库介绍2、软件准备3、硬件准备4、代码实现4.1 初始化NVS Flash4.2 读写Key/Value对4.3 保存/读取网络凭据4.4 复位后记住最后的 GPIO 状态在本文中,我们将介绍如何使用 Preferences库将数据存储到 ESP32 的Flash中…

编写msyql8.0.21 数据库批量备份脚本

编写msyql8.0.21 数据库批量备份脚本一:编写mysql数据库备份my.cnf文件二、编写数据库导出脚本czywxt_nacos.bat@echo off chcp 65001 > nul title MySQL Backup for czywxt_nacos setlocal disabledelayedexpansi…

完整教程:基础算法---【差分】

完整教程:基础算法---【差分】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

Android 源码中如何生成一个platform JKS 文件?

首先我们需要在源代码环境中将 build/target/product/security/ 文件夹 copy 到本地。 下边的操作需要在 ubuntu 或者 mac 下。重要安全提醒:platform 密钥是系统级私钥,拥有它就能签出系统权限应用。不要把它放到公…