基于RT-Thread V4.1.1的LVGL运行后,界面不切换,运行是正常的,界面多次切换后或出现
msh />(header_ptr->magic == (RT_MEMHEAP_MAGIC | RT_MEMHEAP_USED)) assertion failed at function:rt_memheap_free, line number:622
这个的经过,然后就死掉了。
界面切换函数如下,不知道在哪里有重复释放内存导致的,一直没有找到原因:
static void screen_btn_1_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t * act_scr = lv_scr_act();
lv_disp_t * d = lv_obj_get_disp(act_scr);
switch (code) {
case LV_EVENT_CLICKED:
{
if (d->prev_scr == NULL && (d->scr_to_load == NULL || d->scr_to_load == act_scr))
{
lv_obj_clean(act_scr);
if (guider_ui.screen_1_del == true) {
setup_scr_screen_1(&guider_ui);
}
lv_scr_load_anim(guider_ui.screen_1, LV_SCR_LOAD_ANIM_NONE, 20, 20, true);
guider_ui.screen_1_del = true;
}
break;
}
default:
break;
}
}
你好,请问重复释放是指哪里重复释放了呢?谢谢!有的时候或出现Hardfault
Hardfault不一定assert的问题相同,可能先查hardfault。
根据最后1行的信息,凭经验,感觉是申请内存为空时没检查就直接访问了。