博客
关于我
【链表问题】建立链表遇到的问题(链表突然消失,链表突然全部为空)_liangchaoxi的IT博客_新浪博客...
阅读量:478 次
发布时间:2019-03-06

本文共 759 字,大约阅读时间需要 2 分钟。

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

 原因是:

 单片机使用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);
  }
}

转载地址:http://kkidz.baihongyu.com/

你可能感兴趣的文章
Netbeans 8.1启动参数配置
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
netbeans生成的maven工程没有web.xml文件 如何新建
查看>>
netcat的端口转发功能的实现
查看>>
netfilter应用场景
查看>>
netlink2.6.32内核实现源码
查看>>
netmiko 自动判断设备类型python_Python netmiko模块的使用
查看>>
NetMizer-日志管理系统 dologin.php SQL注入漏洞复现(XVE-2024-37672)
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
netstat命令用法详解
查看>>
Netstat端口占用情况
查看>>
Netty 4的内存管理:sun.misc.Unsafe
查看>>
Netty channelRegistered\ChannelActive---源码分析
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
查看>>