Skip to content

空指针解引用 #3

@ZhangRiven

Description

@ZhangRiven

硬件平台:stm32f103rct6
使用了样例代码,在36行程序调用了EasyUIAddItem函数,程序在其中触发了hardfault。
分析了原因:*item的成员flagparam为NULL(0x00000000),执行EasyUIAddItem函数的第1行和第3行,对这两个空指针解引用和赋值,造成了内存访问错误。
请问是否是我使用有误?我暂时这样处理了:

void EasyUIAddItem(EasyUIPage_t *page, EasyUIItem_t *item, char *_title, EasyUIItem_e func, ...)
{
    // -------被替代-----
    // *item->flag = false;
    // item->flagDefault = false;
    // *item->param = 0;

    // ------替代-------
    if (item->flag)//NULL
    {
        *item->flag = false;
        item->flagDefault = false;
    }
    if (item->param)
    {
        *item->param = 0;
    }
    // ----------
    item->paramDefault = 0;
    item->paramBackup = 0;
    item->pageId = 0;
    item->Event = NULL;
……

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions