C Valgrind内存泄漏可达
不断获取C Valgrind内存泄漏可达,c,memory-leaks,valgrind,C,Memory Leaks,Valgrind,不断获取printf和scanf语句的可访问内存泄漏。我需要一点漏洞都没有。当我运行报告时,它说我在打印语句和扫描语句中得到了可触及的泄漏。我的问题是如何修复泄漏 以下是valgrind报告: kidslove MacBook:src kidslove$valgrind——泄漏检查=完整——显示泄漏类型=全部。/a.out 返回泄漏的程序的一部分: FILE *openFile() { char name[20]; FILE *fin; do { printf("Enter
printf
和scanf
语句的可访问内存泄漏。我需要一点漏洞都没有。当我运行报告时,它说我在打印语句和扫描语句中得到了可触及的泄漏。我的问题是如何修复泄漏
以下是valgrind报告:
kidslove MacBook:src kidslove$valgrind——泄漏检查=完整——显示泄漏类型=全部。/a.out
返回泄漏的程序的一部分:
FILE *openFile() {
char name[20];
FILE *fin;
do {
printf("Enter File Name: "); //line 15 leak
scanf("%s", name); // line 16 leak
fin = fopen(name, "r");
}while(fin == NULL);
return fin;
}
最初的要求是:
fin = openFile();
系统上的标准C库似乎不需要释放stdio使用的缓冲区。这没什么好担心的。程序退出时,系统将释放内存
通常,操作系统提供的valgrind包包含抑制文件,这些文件告诉valgrind不要报告大量预期泄漏。要么你正在使用非标准的valgrind软件包,要么你已经禁用了标准抑制功能,要么是在该系统上构建valgrind的任何人都不介意。
fopen
withoutfclose
调用者将关闭它。@rel:报告指向printf/scant。我们希望fclose在别处……fclose()在我的主函数中。您可以使用write而不是printf,使用read而不是scanf(尽管后者需要一些工作)
fin = openFile();