您的位置 首页 硬件

树立链表遇到的问题(链表忽然消失,链表忽然悉数为空)

在单片机程序内建立链表时候,无法为第三个节点开辟空间,现象是,建立链表的时候,第一个和第二个节点均能正确加入,将第三个节点加入的时

单片机程序内树立链表时分,无法为第三个节点拓荒空间,现象是,树立链表的时分,第一个和第二个节点均能正确参加,将第三个节点参加的时分,整个链表内的为空。

原因是:

单片机运用Mallco时分要考虑指定区域,指定的区域必定要足够大。

咱们调试的时分,便是在IAR中增加仓库的空间。

在IAR中调试程序,遇到了这样的问题,那便是,程序运转的进程傍边,链表的内容忽然为空,读取链表的内容失利。剖析了一下原因是,一开始咱们是只发现增加失利,增加前面的1、2个单元是成功的,到了第三个就失利了,查看了分配空间的程序malloc,malloc分配一个接连的空间,假如分配失利,回来的便是一个空地址,而咱们的链表头刚好等于回来值Token_Head=inset(Token_Head,New_point);,所以链表头“不见了”,天然链表就消失了。

删去节点后应该,开释空间,要不然,再需求重复刺进删去的程序中,刺进的空间不会被从头使用,而新刺进的又要新的空间,如此重复,再大的空间也不够用。下面这个程序放在循环中,循环到必定的次数,就会看到,链表忽然“悉数变为空”。

void Test_List(void)//树立固定链表
{
for(i=0;i<60;i++)
{
strcpy(Mark_Del_Node,Token_Head->MacID);
Token_Head=del( Token_Head,”0005″);
struct MacID_Struct *New_point;
New_point=(struct MacID_Struct*)malloc(LEN);
strcpy(New_point->MacID,”0005″);
Token_Head=inset(Token_Head,New_point);
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/259024.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部