CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

关于链表存储的内存释放问题

楼主chenglitao(不好意思)2006-03-16 22:11:48 在 C/C++ / C++ 语言 提问

问:用链表存储数据要用new申请空间,当程序结束的时候要释放空间,怎么释放,是一个一个结点的释放还是只要把头指针付空那?能不能给段代码说明一下.再有就是为什么数组不需要自己释放? 问题点数:20、回复次数:4Top

1 楼fiftymetre(50米深蓝)回复于 2006-03-16 22:39:22 得分 5

是一个一个结点的释放还是只要把头指针付空那?  
   
  把头指针付空 这样怎么可以的呢,这样不是全都断掉了吗  
   
  .再有就是为什么数组不需要自己释放?  //会吗?  
   
  如果是分配数组内存,释放时需要使用   []   如;    
  int   *p=new   int[10];    
  delete   []p;   //由于分配数组需要使用   []    
  Top

2 楼Wolf0403(废人:独活十年~心如刀割)回复于 2006-03-17 01:04:58 得分 10

struct   listnode  
  {  
      int   data;  
  #ifndef   NDEBUG  
      int   used;   /*   is   .data   holding   valid   data?   */  
  #endif  
      struct   listnode   *next;  
  }   *head   =   NULL;  
   
  struct   listnode   *  
  new_node   (size_t   cnt)  
  {  
      struct   listnode   *first   =   NULL;  
      struct   listnode   **next;  
      int   i;  
      /*   use   calloc(3)   so   we   don't   need   to   zero-up   the   memory   manually   */  
      first   =   (struct   listnode   *)   calloc   (1,   sizeof   (struct   listnode));  
      if   (!first)  
          {  
              die   ("calloc()   failed");  
          }  
      next   =   &first->next;  
      for   (i   =   1;   i   <   cnt;   ++i)  
          {  
              *next   =   (struct   listnode   *)   calloc   (1,   sizeof   (struct   listnode));  
              if   (!(*next))  
                  {  
                      die   ("calloc()   failed");  
                  }  
              next   =   &(*next)->next;  
          }  
      return   first;  
  }  
   
  /*   Free   p   and   all   its   ->next   nodes   */  
  void  
  free_list   (struct   listnode   *p)  
  {  
      struct   listnode   *tmp;  
      while   (p)  
          {  
              tmp   =   p->next;  
              free   (p);  
              p   =   tmp;  
          }  
  }  
   
  今晚刚写的。。Top

3 楼ykzhujiang(朱朱)回复于 2006-03-17 03:23:26 得分 5

每个节点都要释放  
  数组释放是因为有专门的语法   delete   []Top

4 楼chenglitao(不好意思)回复于 2006-03-17 11:24:13 得分 0

我想也是,可是书上怎么都一点都没提,有点疑惑是不是可以很简单的释放.原来如此Top

相关问题

  • 链表内存释放问题
  • 能不能释放静态存储区的变量占的内存的?
  • 释放内存
  • 内存释放
  • 内存释放
  • 释放内存?
  • 内存未释放?
  • 在VC++中如何释放链表内存???(急)
  • Delphi报表不能正确释放内存SOS
  • 请问如何释放一个链表的内存空间

关键词

  • 指针
  • 释放
  • 数组
  • struct listnode
  • calloc
  • 头指针付
  • next
  • 需要
  • tmp
  • data

得分解答快速导航

  • 帖主:chenglitao
  • fiftymetre
  • Wolf0403
  • ykzhujiang

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo