C 如何在使用FILE*打开文件后释放泄漏的内存?

C 如何在使用FILE*打开文件后释放泄漏的内存?,c,C,所以,我正在遭受内存泄漏!节目如下: #include <string.h> #include <assert.h> #include <ctype.h> #include <stdlib.h> int main(int b, char** locations) { struct pair* table[size]; createTable(table); int look = 0; FILE * textFi

所以,我正在遭受内存泄漏!节目如下:

#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>

int main(int b, char** locations) {

    struct pair* table[size];
    createTable(table);
    int look = 0;

    FILE * textFile;

    look = 1;
    int doing = 0;
   
    while (locations[look] != NULL) {
        textFile = fopen(locations[2], "r");
        //textFile = fopen(locations[look], "r");
        look++;
        doing++;
        //free(textFile);
    }


}
#包括
#包括
#包括
#包括
int main(int b,字符**位置){
结构对*表[大小];
createTable(表);
int look=0;
文件*textFile;
look=1;
int-do=0;
while(位置[外观]!=NULL){
textFile=fopen(位置[2],“r”);
//textFile=fopen(位置[look],“r”);
look++;
做++;
//免费(文本文件);
}
}
根据valgrind的说法,有两个漏洞我该如何解决?程序以
/main-12 folder/example.txt folder/example2.txt…

试图释放每个
文件*
无效,会导致程序无限运行。
请记住,这只是一个代码片段,这是我的MRE,我将泄漏的范围缩小到了。

textfile
不能是
free()
d,但您可以
fclose()
它,所有分配给运行它的内部内存都将由stdio库释放


您无法释放已泄漏的内存,因为泄漏的含义来自于无法获取分配它的地址的引用。您已经用该内存的地址覆盖了指针,现在您没有任何方法在虚拟地址空间中查找该内存。

即使调用
fclose()
,您仍然会遇到这种情况吗?处理完文件后,您应该
fclose()
,从代码判断。你帮我解决了这个问题,所需要的只是循环中的fclose(textFile)。我建议你在循环之前只打开一次文件,因为名称
locations[2]
保持不变?第一个漏洞是没有关闭文件,第二个漏洞可能是没有释放指针列表(
创建表格(表格);