51Testing软件测试论坛

标题: LR脚本有点内存泄漏~请教原因 [打印本页]

作者: yulei1983    时间: 2013-8-20 09:20
标题: LR脚本有点内存泄漏~请教原因
脚本代码如下,为了说明问题所以简化了:
char * FindPos = NULL;

        if ((FindPos = (char *)calloc(1024, sizeof(char))) == NULL)
                {
                        lr_error_message("Insufficient memory available");
                        return -1;
                }
         free(FindPos);
        return 0;
}
以上代码放在action中迭代运行,发现内存会慢慢增加~最后吃掉所有内存.
作者: 云层    时间: 2013-8-20 12:32
你return -1后就没机会free了吧
作者: yulei1983    时间: 2013-8-20 17:28
本帖最后由 yulei1983 于 2013-8-20 17:31 编辑

但是return -1之前是调用内存不成功啊~不需要释放吧
来个详细的
replacestr(char * sSrc, char *sMatchstr, char *sReplaceStr, long int Tmpsize)
{
int stringlen;
char *NewString = NULL;
char * FindPos = NULL;

FindPos = (char *)strstr(sSrc, sMatchstr);

if ((NewString = (char *)calloc(Tmpsize, sizeof(char))) == NULL)

{

lr_error_message("Insufficient memory available");

return -1;

}

if ((!FindPos)||(!sMatchstr))
{

//lr_error_message("XML is not responsed,arose FindPos is NULL");

free(NewString);

free(FindPos);

return -1;
}
else
{
while (FindPos != NULL)

{

memset(NewString, 0, Tmpsize);

stringlen = FindPos - sSrc;

strncpy(NewString, sSrc, stringlen);

strcat(NewString, sReplaceStr);

strcat(NewString, FindPos + strlen(sMatchstr));

strcpy(sSrc, NewString);

FindPos = (char *)strstr(sSrc, sMatchstr);

}
  }

free(NewString);
//free(FindPos);
return 0;
}
作者: yulei1983    时间: 2013-8-20 17:31
分配不成功也需要释放一下吗?
作者: yulei1983    时间: 2013-8-20 17:32
分配失败也需要free吗?
作者: yulei1983    时间: 2013-8-20 17:35
分配失败也需要free吗?
作者: yulei1983    时间: 2013-8-21 09:01
调用不成功也需要释放吗?
作者: zhang12247    时间: 2013-8-21 17:28
是否需要释放,你为什么不自己尝试的试试?不就都清楚了?
作者: zhang12247    时间: 2013-8-21 17:28
是否需要释放,你为什么不自己尝试的试试?不就都清楚了?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2