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中迭代运行,发现内存会慢慢增加~最后吃掉所有内存. 你return -1后就没机会free了吧 本帖最后由 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;
} 分配不成功也需要释放一下吗? 分配失败也需要free吗? 分配失败也需要free吗? 调用不成功也需要释放吗? 是否需要释放,你为什么不自己尝试的试试?不就都清楚了? 是否需要释放,你为什么不自己尝试的试试?不就都清楚了?
页:
[1]