【发布时间】:2020-03-31 22:29:42
【问题描述】:
我的 main 函数看起来像这样,Valgrind 在第二个 getline 上向我抛出了内存泄漏。我有两个 while 周期。第一个结束是通过键入 ENTER 和第二个通过 EOF。省略的功能应该对问题没有影响。可能是什么问题?我有两次getline?
while (1)
{
phrases = NULL;
size = 0;
charactersCnt = getline (&phrases, &size, stdin);
if ( (int) charactersCnt < 1)
{
free(phrases);
free(fraze);
return 0;
}
...
if ( phrases[0] == '\n')
{
break;
}
}
while (1)
{
word = NULL;
size = 0;
if ((i = getline (&word, &size, stdin)) == EOF)
break;
sscanf (word, "%[^\n]s",word);
int c = 0;
...
}
for(int i = 0; i < countSt; i++ ){
free(lines[i].fraze);
}
free(lines);
free(phrases);
free(word);
return 0;
}
【问题讨论】:
标签: c memory memory-management memory-leaks valgrind