当前位置:  技术问答>linux和unix

链表和内存的操作

    来源: 互联网  发布时间:2016-01-20

    本文导语:  程序中有一个GtkClist,一个链表,链表内容将被显示到GtkClist中 下面是代码 GtkWidget *listbox; hlist *list; hlist *tail; hlist *find(char* name)//查找特定名称节点在链表中位置 {  hlist *p=list->next;  char *s;  while(p)   {   s=p->host...

程序中有一个GtkClist,一个链表,链表内容将被显示到GtkClist中
下面是代码
GtkWidget *listbox;
hlist *list;
hlist *tail;

hlist *find(char* name)//查找特定名称节点在链表中位置
{
 hlist *p=list->next;
 char *s;
 while(p)
  {
  s=p->hostname;
  if(strcmp(s,name))
   p=p->next;
  else
   return p;
  }
 return null;
}
void initlist()
{
 list=(hlist *)malloc(sizeof(hlist));
 tail=list;
 list->hostname="";
 list->next=null;
}
void updatelist()//更新列表
{
 gtk_clist_clear(GTK_CLIST(listbox));
 hlist *p=list->next;
 while(p)
 {
 addtonamelist(p->hostname);
 p=p->next;
 }
 gtk_widget_show(listbox);
}

void initnode(hlist* node,char* name)//初始化新节点
{
 node->hostname=name; 
 node->next=null;
}

void newnode(struct sockaddr_in addr,char* name)//增加节点
{
 if(!(find(name)))//如果是新节点
 {

  hlist *p=(hlist *)malloc(sizeof(hlist));
  initnode(p,name);
  tail->next=p;
  tail=p;
  updatelist();
 }
}
下面是GtkClist选中的时候的回调函数
void listselect(GtkWidget *widget,gint row,gint column,GdkEventButton *event,gpointer data)
{
 hlist * p;
 gchar *name;
 gtk_clist_get_text(GTK_CLIST(listbox),row,column,&name);
 p=find(name);
 if(p)
  {
  g_print("%sn",p->hostname);
  }
 else g_print("不存在!n");}
我新生成一个节点后,GtkClist能显示出来,但是我每次选中的时候都说不存在!!
我在这个回调函数里看了一下节点确实有两个,一个是头节点一个是新节点,但是节点好像没被初始化一样...哪里出问题了?

|
hehe ,接分

    
 
 

您可能感兴趣的文章:

  • 【操作系统虚拟内存和物理内存疑惑】
  • 操作系统里的虚拟内存的好处?
  • 操作系统是怎么把程序装进内存呢?
  • 内核操作用户空间内存
  • 操作系统对于"堆"内存的管理,一个疑惑
  • s3c2410 linux操作系统 insmod 驱动错误 内存耗尽
  • 第一次提问.一个操作系统问题.[拿内存加上外存容量之和与虚拟存储空间相比哪个大?]
  • 请问return语句会执行哪些操作?在函数中return一个已分配内存的指针,该指针所占用的内存会释放吗?
  • 这个操作java会自动释放内存空间吗?
  • 如何在Linux下用驱动程序切出200MB内存,不让操作系统使用,给某一进程独享
  • 浅谈C#互操作的内存溢出问题
  • 关于使用c程序对mysql数据操作造成内存不断减少的问题
  • 因为mmap函数返回值是void*类型,是否可以将其强制转换成char*类型,按字符串操作,然后将修改重新写入内存映像即可????
  • 为什么多线程编程中new的内存在delete时出现非法操作?
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • 共享内存操作程序问题
  • 【咨询】Linux操作系统下读未申请的内存或导致异常吗?谢谢!
  • 笔试遇到内存操作思考题,C语言
  • 如何查看AIX操作系统的CPU和内存使用情况?
  • 字符串操作(读写在内存中)的问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Vectors 成员 get_allocator():返回vector的内存分配器
  • 我的机器内存128 ,安装redhat9 后,可用内存很少了,如何节省内存呢?
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 奇闻:Apache+Apache JServ 1.1.1+1G内存居然报内存不够,那位高友知道参数设置,把俺的1G内存都利用起来,感激不尽啊
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • C/C++内存池实现介绍及基本要求
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • linux下free命令显示的内存使用情况分析
  • Solaris下如何获得物理内存和虚拟内存的大小?
  • c/c++内存堆分配和栈分配理解
  • 程序需要共享内存相当大,但是系统的内存有限
  • Ubuntu查看内存,进程相关命令介绍
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • Linux 共享内存介绍及实现代码
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 遇到奇怪的内存泄露问题,应用程序杀死内存无法释放!
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • Microsoft Internet Explorer内存破坏漏洞(CNVD-2013-13096)
  • redhat7.1 p4,700多m内存,经常耗了400m内存,为什么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3