我有一个代码,我想测试我在哪里得到一个段错误。但是当我运行 valgrind 时,如果让我转向一个我没有做错任何事的地方。它忽略输入的 txt 文件并将其删除。这是代码:
int main(int argc, char * argv[]){
FILE * input=fopen(argv[1],"r");
FILE * output=fopen(argv[2],"w");
int i,j,NumCrom;
int instancias=0,torres,InstanciaAtual=0;
fscanf(input,"%i",&instancias);
//......
return (EXIT_SUCCESS);
}
valgrind 错误:
1 errors in context 1 of 1:
==13878== Invalid read of size 4
==13878== at 0x53A935A: __isoc99_fscanf (isoc99_fscanf.c:31)
==13878== by 0x400CF0: main (main.c:18)
==13878== Address 0x0 is not stack'd, malloc'd or (recently) free'd
但那部分没有错。它可以通过一个函数单独读取 txt。每次我启动 valgrind 时它都会清理输入 txt,这就是返回此段错误的原因(但它得到了其他没有返回的内容,因为 valgrind 在此之前的第一个段错误调用中关闭)。任何人都可以帮助我吗?并感谢您对此提供的任何帮助。