荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (Welcome to InstallBBS,Linux!), 信区: InstallBBS
标  题: FB2k 登陆过程当中的严重效率问题(转寄)
发信站: 荔园晨风BBS站 (Thu Dec 27 17:49:24 2001), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjksam@smth.org 所发表 】
发信人: quickmouse.bbs@apue.dhs.org (碰猫死翘翘), 信区: BBSMan_Dev
标  题: FB2k 登陆过程当中的严重效率问题(转寄)
发信站: APUE (Tue Dec 25 13:49:00 2001)
转信站: SMTH!thunews.dhs.org!news.tiaozhan.com!APUE

问题出现在getfriendstr()函数当中,函数当中有这样一段:
    for (i = 0; i < uinfo.fnum; i++)
 {
  uinfo.friend[i] = searchuser(tmp[i].id);
  if (uinfo.friend[i] == 0)
   deleteoverride(tmp[i].id, "friends");
  /* 顺便删除已不存在帐号的好友 */
 }
但是deleteoverride函数中间有:
     if (delete_record(buf, sizeof(fh), deleted) != -1) {
   (friendflag) ? getfriendstr() : getrejectstr();
  } else {
形成了递归调用。
问题虽然不大,但是在getfriendstr()当中有calloc内存分配调用。
*alloc函数调用会从进程堆当中分配内存,不够空间时从系统堆当中取得,
free()之后进程如果不退出,不会把资源还给系统。如果一个用户好友名单
有100个,有10个已经不存在,那么在这里将占用53k堆空间。虽然不泄漏,
但也是浪费了。以下是gdb调试的堆栈情况

另外,由于friendflag的问题,删除reject的时候会刷新friend(莫名其妙)

Breakpoint 1, getfriendstr () at talk.c:2101
2101    {
(gdb) bt
#0  getfriendstr () at talk.c:2101
#1  0x809ab4d in getfriendstr () at talk.c:2116
#2  0x8099faf in deleteoverride (uident=0x80d25ba "ruickmouse",
    filename=0x80b4700 "friends") at talk.c:1757
#3  0x809ab4d in getfriendstr () at talk.c:2116
#4  0x8099faf in deleteoverride (uident=0x80d212a "Auickmouse",
    filename=0x80b4700 "friends") at talk.c:1757
#5  0x809ab4d in getfriendstr () at talk.c:2116
#6  0x8083948 in u_enter () at main.c:238
#7  0x8084f86 in user_login () at main.c:976
#8  0x80858d0 in start_client () at main.c:1244
#9  0x80690e5 in main (argc=1, argv=0xbffffa74) at bbsd.c:787
#10 0x4008ab65 in __libc_start_main (main=0x8068ad0 <main>, argc=1,
    ubp_av=0xbffffa74, init=0x8052b18 <_init>, fini=0x80a492c <_fini>,
    rtld_fini=0x4000df24 <_dl_fini>, stack_end=0xbffffa6c)
    at ../sysdeps/generic/libc-start.c:111
--
※ 来源:·UNIX编程 apue.dhs.org·[FROM: 211.69.197.73]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店