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 ***** (重复200(lfun2))
之前和之后
逻辑错误...
编辑:不知道,通过这些模糊的眼睛代码看起来很好。
收回那句话。逻辑错误代码1]
是正确答案。
需要提示吗?acutBuildList返回多少列表项?你把标签贴在哪里了?
是的,我看到了它
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) ;
}
谢谢保罗
页:
[1]