[英]Memory leak C -Valgrind
我的主函數看起來像這樣,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;
}
缺乏一致的縮進使得這很難閱讀,但我會嘗試一下。
每次調用 getline 並且 word 為 NULL 時,它都會分配一個數組。 如果第二個 while 恰好循環兩次,我看不到 word 在哪里被釋放。 當您再次將 word 設為 NULL 並通過 getline mallocs 處理這可能會嚇壞 valgrind。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.