fclose导致分段错误?

时间:2012-01-03 18:57:44

标签: c linux

以下是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导致分段错误?

2 个答案:

答案 0 :(得分:4)

我认为fclose没有可能导致段错的问题,我认为你的问题出在程序的其他地方。

有可能堆栈在其他地方被破坏,并且错误显示何时调用fclose。我建议你再次检查一下你的其他源代码,然后用调试器/内存分析器仔细查看会发生什么。

我能看到的唯一可能导致错误的是file_name不会被空终止。

答案 1 :(得分:2)

fclose()没有问题。问题可能在于您将file_name与NULL进行比较,或者可能与代码的其他部分进行比较。

相关问题