链表动态分配内存求助

最近写一个菜单程序,子菜单个数有部分是动态的菜单数量,就必须用到结构体数组中包含动态结构体数组,但是不知为何引用出错。

MenuItem *Del_UserMeun;
MenuItem FactorySetMenu[3];
MenuItem UserTypeMenu[3];
MenuItem AddFtMenu[5];
MenuItem AddUserMenu[5];
MenuItem SystemSetMenu[3];
MenuItem UserMangerMenu[4];
MenuItem MainMenu[3];
MenuItem HomeMenu[3];

MenuItem* DelUserMenu_Creat()
{
u8 UserCont;
u8 i;

    EEPROM_read_n(UserContAddr,&UserCont,1);
  if(UserCont==0x00||UserCont==0xff)
    {
     UserCont = 0;
}
  uart_printf("malloc struct\r\n");
  Del_UserMeun = (MenuItem *)malloc(sizeof(MenuItem)*(UserCont+1));
  if(Del_UserMeun!=NULL)
    {

            Del_UserMeun[0].MenuCount=UserCont;
            Del_UserMeun[1].DisplayString=ShowDelUserHead;
            Del_UserMeun[2].Subs = Del_User;
            Del_UserMeun[3].ChildrenMenus = Null;
            Del_UserMeun[4].ParentMenus = UserMangerMenu;
         for(i=1;i<UserCont;i++)
       {
              Del_UserMeun[i].MenuCount=UserCont;
              Del_UserMeun[i].DisplayString=ShowUserID;
              Del_UserMeun[i].Subs = Del_User;
              Del_UserMeun[i].ChildrenMenus = Null;
              Del_UserMeun[i].ParentMenus = UserMangerMenu;

   }

    }

    return Del_UserMeun;

}

void FreeGetUserMenu_Creat()
{
free(Del_UserMeun);
}

MenuItem UserTypeMenu[3]=
{
//MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 2, ShowUserTypeHead, NullSubs, Null, AddUserMenu},
{ 2, ShowAdminType, SetAdminType, Null, AddUserMenu},
{ 2, ShowOrdType, SetOrdType, Null, AddUserMenu},

};

MenuItem AddFtMenu[5]=
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 4, ShowAddFtHead, NullSubs, Null, AddUserMenu},
{ 4, ShowAddFt1, AddFt1, Null, AddUserMenu},
{ 4, ShowAddFt2, AddFt2, Null, AddUserMenu},
{ 4, ShowAddFt3, AddFt3, Null, AddUserMenu},
{ 4, ShowAddFt4, AddFt4, Null, AddUserMenu},
};

MenuItem AddUserMenu[5]=
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 4, ShowAddUserHead, NullSubs, Null, UserMangerMenu},
{ 4, ShowAddFt, NullSubs, AddFtMenu, UserMangerMenu},
{ 4, ShowAddCard, AddCard, Null, UserMangerMenu},
{ 4, ShowAddPsw, AddPassword, Null, UserMangerMenu},
{ 4, ShowUserType, NullSubs, UserTypeMenu, UserMangerMenu},
};

MenuItem FactorySetMenu[3]=
{
// MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 2, ShowFactorySetHead, NullSubs, Null, SystemSetMenu},
{ 2, ShowEnter, Del_All_UserInfo, Null, SystemSetMenu},
{ 2, ShowEsc, NullSubs, SystemSetMenu, SystemSetMenu},
};

MenuItem SystemSetMenu[3]=
{ // MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 2, ShowSystemSetHead, NullSubs, Null, MainMenu},
{ 2, ShowTimeSet, TimeSet, Null, MainMenu},
{ 2, ShowFactorySet, NullSubs, FactorySetMenu, MainMenu},
};

MenuItem UserMangerMenu[4]=
{ // MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 3, ShowUserMangerHead, NullSubs, Null, MainMenu},
{ 3, ShowAddUser, AddNewUser, AddUserMenu, MainMenu},
{ 3, ShowDelUser, NullSubs, Del_UserMeun, MainMenu},
{ 3, ShowEmPower, NullSubs, Null, MainMenu},
};

MenuItem MainMenu[3]=
{ // MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 2, ShowMenuHead, NullSubs, Null, HomeMenu},
{ 2, ShowUserManger, NullSubs, UserMangerMenu, HomeMenu},
{ 2, ShowSystemSet, NullSubs, SystemSetMenu, HomeMenu},
};

MenuItem HomeMenu[3] =
{
// MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 0, OLED_ShowBattery, NullSubs, MainMenu, Null},
{ 2, OLED_ShowLock, NullSubs, MainMenu, Null},
{ 2, OLED_ShowTime, NullSubs, MainMenu, Null},
};
//——————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值