pkohut 发表于 2010-7-13 10:44:04

resbuf泄漏

为什么lfunc2泄漏而lfunc1不泄漏
static int ads_lfunc1(void)
{
    resbuf *phead = acutNewRb(RTLB);
    resbuf *pTail = phead;
    for(size_t idx = 0;idx rbnext = acutNewRb(RTLB);
      pTail = pTail->rbnext = acutNewRb(RTSTR);
      pTail->resval.rstring = _T("Hello");
      pTail = pTail->rbnext = acutNewRb(RTDOTE);
      pTail = pTail->rbnext = acutNewRb(RTSTR);
      pTail->resval.rstring = _T("world");
      pTail = pTail->rbnext = acutNewRb(RTLE);
    }
    pTail = pTail->rbnext = acutNewRb(RTLE);
    acutRelRb(phead);
    return (RSRSLT) ;
}
static int ads_lfunc2(void)
{
    resbuf *phead = acutNewRb(RTLB);
    resbuf *pTail = phead;
    for(size_t idx = 0;idx rbnext =
      acutBuildList(RTLB,RTSTR,_T("HELLO"),RTDOTE,RTSTR,_T("world"),RTLE,0);
    }
    pTail = pTail->rbnext = acutNewRb(RTLE);
    acutRelRb(phead);
    return (RSRSLT) ;
}

**** Hidden Message *****

pkohut 发表于 2010-7-13 11:08:03

(重复200(lfun2))
之前和之后

pkohut 发表于 2010-7-13 11:23:54


逻辑错误...
编辑:不知道,通过这些模糊的眼睛代码看起来很好。

pkohut 发表于 2010-7-13 11:47:25


收回那句话。逻辑错误代码1]
是正确答案。
需要提示吗?acutBuildList返回多少列表项?你把标签贴在哪里了?

pkohut 发表于 2010-7-13 11:53:36

是的,我看到了它
static resbuf*RbTail( const resbuf* src )
{
    if (src != 0)
    {
      resbuf *pItr = const_cast(src);
      while (pItr->rbnext != NULL)
      pItr = pItr->rbnext;
      return pItr;
    }
    return 0;
}
static int ads_lfunc2(void)
{
    resbuf *phead = acutNewRb(RTLB);
    resbuf *pTail = phead;
    for(size_t idx = 0;idx rbnext = acutBuildList(RTLB,RTSTR,_T("HELLO"),RTDOTE,RTSTR,_T("world"),RTLE,0);
      pTail = RbTail(pTail);
    }
    pTail = pTail->rbnext = acutNewRb(RTLE);
    acutRelRb(phead);
    return (RSRSLT) ;
}

pkohut 发表于 2010-7-13 11:54:37

谢谢保罗
页: [1]
查看完整版本: resbuf泄漏