下面是源代码的一小部分fclose导致错误的地方?此函数并不总是被调用,在某些特定条件下会调用此函数。
int write_into_file (char * file_name)
{
FILE * fp = NULL ;
if (file_name == NULL)
{
return FAIL ;
}
if ((fp = fopen (file_name , "r")) == NULL)
{
if ((fp = fopen (file_name, "w")) == NULL)
{
return FAIL ;
}
}
fclose (fp) ;
fp = NULL ;
return SUCESS;
}
Run Code Online (Sandbox Code Playgroud)
我们将大小为 1024 的字符缓冲区传递给 file_name。请谁能告诉我为什么 fclose 会导致分段错误?
我认为这里没有可能fclose导致段错误的可能方法,我认为您的问题出在程序的其他地方。
堆栈可能在其他地方损坏,并且该错误在fclose被调用时显示。我建议您再次查看您的其他源代码,并使用调试器/内存分析器仔细查看会发生什么。
我能看到的唯一可能导致错误的另一件事file_name不是以空值结尾。