以下是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;
}
我们将大小为1024的字符缓冲区传递给file_name。 请问有谁可以告诉我为什么fclose导致分段错误?
答案 0 :(得分:4)
我认为fclose
没有可能导致段错的问题,我认为你的问题出在程序的其他地方。
有可能堆栈在其他地方被破坏,并且错误显示何时调用fclose
。我建议你再次检查一下你的其他源代码,然后用调试器/内存分析器仔细查看会发生什么。
我能看到的唯一可能导致错误的是file_name
不会被空终止。
答案 1 :(得分:2)
fclose()没有问题。问题可能在于您将file_name与NULL进行比较,或者可能与代码的其他部分进行比较。