|
本帖最后由 xylslss 于 2012-12-11 10:17 编辑
在做设计的过程中用到链表,想把该链表放在Atmega64的自带2K eeprom中,其间需要用到动态分配空间的函数malloc,现在出现的问题是malloc分配结果出错了,程序如下:
typedef struct BOX
{
unsigned int rly_num; //继电器号
unsigned int box_num; //箱子号码
unsigned int box_code; //箱子密码
unsigned char card_num[4]; //卡序列号
unsigned char rank; //级别:管理员/普通用户=1/2
unsigned int year; //截止日期:年
unsigned char month; //截止日期:月
unsigned char day; //截止日期:日
unsigned char hour; //截止日期:时
unsigned char minute; //截止日期:分
struct BOX *last; //链表链接,链接上一个单元
struct BOX *next; //链表链接,链接下一个单元
}sBOX;
sBOX *head=NULL,*tail=NULL; //全局变量
//创建链表
void link_creat(sBOX *ps_in)
{
sBOX *ps_new; //要插入的结构体指针
ps_new=(sBOX *)malloc(sizeof(sBOX)); //分配空间程序在这出错:当链表为空时,这里分配一个空间作为表头,之后再次增加节点时,分配空间的结果为NULL
if(ps_new==NULL) return;
save1to2(ps_in,ps_new);
if(head==NULL) //链表为空
{
head=ps_new;
(*head).last=head;
(*head).next=NULL;
tail=head;
}
else
{
(*tail).next=ps_new;
(*ps_new).last=tail;
(*ps_new).next=NULL;
tail=ps_new;
}
}
求高手指点!!!另外链表能存放在eeprom中吗?如果可以要怎么操作?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|