gpt4 book ai didi

c - 内存泄漏C-Valgrind

转载 作者:行者123 更新时间:2023-11-30 19:25:09 25 4
gpt4 key购买 nike

我的主函数如下所示,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 恰好循环两次,我看不到单词在哪里被释放。当你再次将单词设置为 NULL 并通过 getline malloc 时,这可能会吓坏 valgrind。

关于c - 内存泄漏C-Valgrind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59221446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com