LVGL v8.1.0 lv_table 内存泄漏问题

2024年物联网嵌入式最全【GUI】LVGL8内存泄漏分析_lvgl 内存溢出,2024年最新程序员进阶 brief: 界面销毁。* param: 父对象。 阅读详情

问题

最近在用LVGL做GUI,期间遇上 lv_table 释放后存在内存泄漏问题

偶然看到github有人也遇上此问题并提出了解决方案,经测有效 HiFeiz

HiFeiz 原创文章

经 @lovemengx 提示, LVGL v8.2.0 已经修复此问题


目录

问题

文件路径

问题函数

解决方案


文件路径 HiFeiz

lvgl\src\widgets\lv_table.c

问题函数 HiFeiz

static void lv_table_destructor(const lv_obj_class_t* class_p, lv_obj_t* obj){
    LV_UNUSED(class_p);
    lv_table_t* table = (lv_table_t*)obj;
    /*Free the cell texts @ HiFeiz*/
    uint16_t i;
    for (i = 0; i < table->col_cnt * table->row_cnt; i++) {
        if (table->cell_data[i]) {
            lv_mem_free(table->cell_data[i]);
            table->cell_data[i] = NULL;
        }
    }
    if (table->cell_data) lv_mem_free(table->cell_data);
    if (table->row_h) lv_mem_free(table->row_h);
}

释放了 table->row_h 却未释放 table->col_w ,所以出现内存泄漏

解决方案  @ HiFeiz

static void lv_table_destructor(const lv_obj_class_t* class_p, lv_obj_t* obj){
    LV_UNUSED(class_p);
    lv_table_t* table = (lv_table_t*)obj;
    /*Free the cell texts @ HiFeiz*/
    uint16_t i;
    for (i = 0; i < table->col_cnt * table->row_cnt; i++) {
        if (table->cell_data[i]) {
            lv_mem_free(table->cell_data[i]);
            table->cell_data[i] = NULL;
        }
    }
    if (table->cell_data) lv_mem_free(table->cell_data);
    if (table->row_h) lv_mem_free(table->row_h);
    if (table->col_w) lv_mem_free(table->col_w); //增加此行  @ HiFeiz
}

成功解决

LVGL8学习之扩展当前主题(Extending the current theme) 这一篇来学习一下如何扩展当前主题,还是通过codeblock来模拟代码的运行,代码如下: static lv_style_t g_style_btn; /*当已经添加基本主题的样式添加新样式时,调用次函数*/ static void new_theme_apply_cb(lv_theme_t * th, lv_obj_t * obj) { LV_UNUSED(th); if(lv_obj_check_type(obj, &lv_btn_class)) { 阅读详情

相关推荐

2024年echarts饼图如何去掉指示线指示文字_echarts饼图去掉标签,面试必备

legend: {data: []},series : [name: ‘访问来源’,label: {normal: {},data:[{value:335, name:‘直接访问’},{value:310, name:‘邮件营销’},{value:234, name:‘联盟广告’},{value:135, name:‘视频广告’},{value:1548, name:‘搜索引擎’}],},

2401_85012069的博客 2085

lvgl的内存管理函数

lvgl 界面上控件数量限制问题

kelleo的博客 1万+

LVGL8.3内存泄漏实战:如何避免动画循环和页面切换中的坑

本文深入剖析了在LVGL8.3嵌入式GUI开发中,由动画无限循环和页面切换引发的内存泄漏问题。文章详细解释了LVGL的内存管理机制,并提供了通过设置`deleted_cb`回调、构建页面管理器等实战方案,帮助开发者有效避免内存泄漏,确保嵌入式设备长期稳定运行。

pea55的博客 1044

LVGL学习笔记18 - 表Table

表格是由包含文本的行、列和单元格构建的。它不是真实的对象,只是临时绘制的。表格通过lv_table_create创建。

pq的博客 7987

ESP32+LVGL V8嵌入式GUI开发:从环境搭建到性能优化的实战指南

在嵌入式系统开发中,图形用户界面(GUI)的实现是提升产品交互体验的关键。其核心原理在于通过轻量级图形库在资源受限的微控制器上渲染界面并处理用户输入。LVGL作为一款开源、高效的嵌入式图形库,因其丰富的控件和低内存占用而具有重要技术价值,广泛应用于智能家居面板、工业HMI等场景。本文将聚焦于如何在乐鑫ESP32平台上,基于官方ESP-IDF框架成功移植和配置LVGL V8。内容涵盖从稳定的ESP-IDF版本选择、LVGL源码的组件化集成,到关键的显示与触摸驱动适配等全流程。针对开发中常见的性能瓶颈,提供了内

weixin_30855761的博客 347

STM32H7驱动480x1280 MIPI触摸屏的LVGL V9.4移植与优化方案

嵌入式图形用户界面是现代HMI、仪器仪表和手持终端的重要组成部分。MCU驱动高分辨率屏幕时,常面临带宽和内存瓶颈。MIPI DSI接口凭借高速串行传输和较少引脚,成为连接主控与显示屏的优选方案;LVGL作为轻量级开源图形库,能提供流畅的控件渲染。STM32H7系列内集成了LTDC与DSI主机控制器,可直接驱动MIPI屏,省去桥接芯片。本文围绕6.86英寸480×1280电容触摸屏搭配STM32H757与LVGL V9.4的实践,从选型、CubeMX配置、DSI时序、内存规划到触摸接入逐层展开,为高分辨率MC

weixin_34032792的博客 371

【GUI】LVGL8内存泄漏分析

LVGL8内存泄漏分析

slimmm的博客 6951

ESP32-S3驱动AXS15260屏幕跑LVGL 9:RGB接口实战

嵌入式图形界面开发中,驱动高分辨率LCD屏幕是常见技术难点。并行RGB接口屏幕需要控制器持续输出像素数据,帧缓冲和内存带宽直接影响流畅度。ESP32-S3 内置 LCD_CAM 外设并支持 PSRAM,可承载 800x480 级别的 RGB 屏数据;LVGL 9 则提供了现代图形库的高效渲染能力。这套组合适用于智能家居面板、桌面信息屏、DIY仪表盘等场景。围绕 AXS15260 驱动 IC 的初始化、LVGL 9 显示驱动对接、缓冲策略与性能优化,给出了从硬件接线到问题排查的实践路径。

weixin_33862993的博客 436

STM32F746 LVGL 9.0 移植指南:显示、触摸与性能基准测试

嵌入式GUI开发中,流畅度与资源占用是选型核心。LVGL作为流行的开源图形库,通过高效渲染架构和可配置缓存机制,在MCU上实现复杂界面。理解其“绘制-刷新”原理,是优化帧率、降低CPU占用的基础。STM32F746G-DISCO评估板搭载Cortex-M7与板载屏幕,为验证LVGL 9.0提供了理想的软硬件平台。本文围绕该平台,梳理从显示/触摸接口驱动到缓冲区配置的完整移植路径,并结合性能基准测试方法,量化分析FPS与资源消耗。该方案适用于智能家居面板、工业HMI等场景,也是从LVGL 8.x迁移至9.0的

weixin_34377919的博客 408

AT32微控制器与LVGL图形库嵌入式GUI开发实战指南

嵌入式图形用户界面(GUI)开发是物联网终端设备、智能家居控制面板和工业HMI等领域的核心技术需求,其核心在于在资源受限的微控制器(MCU)上实现流畅、美观的交互体验。其原理是通过轻量级图形库直接管理帧缓冲区并驱动显示屏,替代传统的简单LED或串口显示,从而大幅提升产品的用户体验和附加值。LVGL(Light and Versatile Graphics Library)作为一款开源、高度可裁剪的嵌入式图形库,与高性能的ARM Cortex-M内核MCU(如雅特力AT32系列)相结合,构成了本地化、低功耗的

weixin_30352191的博客 350

ESP32-S3与LVGL图形库实战:打造可动态编程的3.2寸透明桌面摆件

在嵌入式开发领域,图形用户界面(GUI)的实现是提升设备交互体验的关键。LVGL(Light and Versatile Graphics Library)作为一款开源、轻量且功能丰富的嵌入式图形库,其核心原理在于提供一套基于C语言的高效图形渲染引擎和丰富的UI控件,能够以极低的硬件资源消耗实现流畅的动画效果。结合ESP32-S3这类高性能Wi-Fi/蓝牙双模微控制器,开发者可以轻松构建具备网络连接能力和复杂图形界面的物联网设备。这种技术组合的工程价值在于大幅降低了嵌入式GUI的开发门槛,并支持通过脚本引擎

weixin_33787529的博客 485

ESP32-S3驱动3.2寸屏移植LVGL与Lua,打造可编程嵌入式显示终端

在嵌入式系统开发中,SPI接口显示屏与图形用户界面(GUI)库是实现人机交互的核心技术。SPI协议以其接口简单、占用引脚少的优势,成为驱动中小尺寸显示屏的主流选择。其工作原理是通过串行时钟和数据线进行全双工或半双工通信,主控制器发送指令和数据来控制屏幕像素。这项技术的价值在于能以较低硬件成本实现丰富的视觉反馈,是智能家居、工业HMI、便携设备等场景的基石。LVGL作为一款开源嵌入式图形库,提供了控件、动画和事件系统,极大简化了嵌入式GUI开发。结合轻量级脚本语言Lua,可实现UI逻辑的动态加载与热更新,将静

weixin_34203832的博客 394

告别手搓UI!用GUI Guider给STM32F4设计LVGL界面,附完整Keil5移植避坑指南

本文详细介绍了如何使用GUI Guider为STM32F4设计LVGL界面,并提供了完整的Keil5移植避坑指南。通过可视化工具GUI Guider,开发者可以高效构建LVGL界面,避免手写UI代码的繁琐,同时解决移植过程中的常见问题,提升开发效率。

weixin_26821003的博客 331

ESP32-S3驱动透明屏:LVGL与Lua脚本化GUI开发实践

嵌入式图形用户界面(GUI)开发是物联网设备与智能硬件交互的核心技术,其原理在于通过图形库在资源受限的微控制器上渲染可视化界面。LVGL作为轻量级开源图形库,凭借其高效的渲染引擎与丰富控件,显著降低了嵌入式GUI的开发门槛,其技术价值在于平衡了性能与资源占用。结合ESP32-S3芯片的强大算力与内存,开发者能够构建流畅的复杂界面。而集成Lua脚本引擎则进一步提升了开发灵活性,实现了固件与业务逻辑的解耦,支持功能动态更新。这一技术组合广泛应用于智能家居中控、工业HMI、桌面信息站等场景。本文聚焦于热门的ESP

weixin_33836874的博客 424

ESP32-S3驱动3.2寸透明屏:集成LVGL与Lua脚本引擎构建智能交互终端

在嵌入式系统开发中,图形用户界面(GUI)和动态脚本能力是提升设备交互性与灵活性的关键技术。LVGL作为一款轻量级、高度可裁剪的嵌入式图形库,为资源受限的MCU提供了丰富的UI控件和流畅的动画效果,是构建嵌入式GUI的首选。其原理是通过高效的C代码进行图形渲染,确保性能。而Lua作为一种轻量级、可嵌入的脚本语言,其价值在于允许在不重新编译和烧录固件的情况下,动态修改设备功能,实现了“一次开发,动态扩展”。将LVGL与Lua结合,构成了一个强大的技术方案:LVGL负责底层高效的图形渲染,Lua则负责上层的业务

weixin_34220179的博客 406

LVGL 自定义组件(类)之 条形码组件

lv_barcode_class 就是自定义的条形码组件(类)里面组成就是类的成员及实现方法。具体可以参考C++中的类和对象。

m0_70044825的博客 1755

基于SEEK100开发板的嵌入式天气APP开发实践

嵌入式系统开发中,物联网设备常需接入网络数据并实现高效UI渲染。以ARM Cortex-A7处理器为核心的开发板通过Linux系统支持,能够运行轻量级GUI框架如LVGL,实现资源受限环境下的流畅交互。本文以SEEK100开发板为例,详细解析如何对接和风天气API获取实时数据,并采用SQLite进行本地缓存。通过优化内存管理和网络请求策略,开发者可以构建稳定运行的嵌入式天气应用,适用于智能家居、工业监控等多种物联网场景。

cishan3804的博客 379

STM32F407移植LVGL v8.3实战:从驱动适配到UI优化全解析

嵌入式图形用户界面(GUI)开发是提升嵌入式设备交互体验的关键技术,其核心在于将轻量级图形库与微控制器(MCU)硬件高效结合。LVGL(Light and Versatile Graphics Library)作为一款开源、资源占用小的图形库,其工作原理是通过抽象层与底层显示、输入设备驱动交互,从而实现跨平台移植。该技术的工程价值在于能为STM32等资源受限的MCU提供流畅的图形界面支持,广泛应用于智能家居控制面板、工业HMI、穿戴设备等场景。本文聚焦于**霸天虎开发板(STM32F407)** 这一具体硬

weixin_42525632的博客 292
下一篇: 记一次 CURL HTTP 500 错误经历
HiFeiz
博客等级 码龄15年 32粉丝 8原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值