2
我特别寻找C11标准(ISO/IEC 9899:2011)或POSIX页面中的单词。我检查了POSIX manual for fwrite,但它没有提及未定义的行为。然而,manual for fclose不说,当stream为空时,fwrite和fread等操作是否有未定义的行为?
,来电后FCLOSE(),不确定的行为的任何使用流导致的。
但我仍然看不到NULL
流是否会导致UB。
我特别寻找C11标准(ISO/IEC 9899:2011)或POSIX页面中的单词。我检查了POSIX manual for fwrite,但它没有提及未定义的行为。然而,manual for fclose不说,当stream为空时,fwrite和fread等操作是否有未定义的行为?
,来电后FCLOSE(),不确定的行为的任何使用流导致的。
但我仍然看不到NULL
流是否会导致UB。
两个fread()
和fwrite()
预计流参数是由成功调用返回fopen()
,fdopen()
或freopen()
的值。由于这些函数错误返回NULL,流参数不能为NULL。
由于手册页并没有说会发生什么,当流是不是一个成功的调用返回到fopen()
值等,这意味着手册页并没有说会发生什么,当流是没有返回值,通过成功呼叫fopen()
等,或换句话说,行为没有被定义。
另请参阅本主板上“Why glibc's fclose(NULL) cause segmentation fault instead of returning error”问题的接受答案。
7.1.4p1适用,除非被覆盖,并且不会覆盖'fread'或'fwrite' –
行为可能是未定义的,即使它没有被明确提及。口头上使用术语“未定义”,如果没有定义,则不定义。 –