下面是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会导致分段错误吗?
发布于 2012-01-04 03:01:27
我认为fclose不可能在这里导致段错误,我认为你的问题出在程序的其他地方。
这可能是堆栈在其他地方被损坏,并且在调用fclose时显示错误。我建议您再检查一次其他源代码,并使用调试器/内存分析器密切关注发生的情况。
我能看到的唯一可能导致错误的事情是file_name不是以null结尾的。
发布于 2012-01-04 03:14:51
fclose()没有问题。问题可能出在file_name与NULL的比较上,也可能出在代码的其他部分。
https://stackoverflow.com/questions/8717225
复制相似问题