20100814错误记录

今天犯的错误:

1单链表方面,取下一个节点的指针,用函数g_slist_next();

p=g_slist_next(p);

p=g_slist_next(qwq_psnplan_remind_list);这个函数的参数应该是链表内的节点,写成链表名字,导致错!!!!!!!!!!!!!!!!!!

2,关于链表的很多函数,返回值是新的链表的开始指针,故,需要用变量接受他,如果不,可能导致达不到效果

例子:qwq_psnplan_remind_list=g_slist_remove(qwq_psnplan_remind_list,btq);//释放内容是btq的节点,如果仅仅是

g_slist_remove(qwq_psnplan_remind_list,btq); 而不用原先的链表名字来接受他,结果是没有释放掉节点,但是节点内容是乱码

3,对链表进行操作时候,务必判断一下链表是否为空,如果为空,则进行空操作,务必指出是进行空操作,否则,后续对链表进行操作的代码对空链表进行操作时候,会出现段错误(查“ 段错误 ”定义;(由此可理解数据结构课本,为什么很多地方第一步要判断链表是不是空,真的会出问题亚)

if (g_slist_length(qwq_psnplan_remind_list)==0) return TRUE;
    do
    {   
        btq=p->data;//p->data,
        if (btq->remind_time_need!=32)
        {
            if(btq->remind_time_need==0)
            {
                btq->remind_time_need=32;               
                if(!g_thread_supported()) g_thread_init(NULL);
                gdk_threads_init();
                g_thread_create(qwq_psnplan_remind_reminding,btq,FALSE,NULL);
       
            }
            else
            {
                btq->remind_time_need--;
            }
        }       
        p=g_slist_next(p);
    }while(p);













































你可能感兴趣的:(thread,数据结构,list,null,2010)