sas*_*hka 10 c c++ stdout flush autoflush
这是代码(有效的C和C++)
#include <stdio.h>
int main() {
printf("asfd");
// LINE 1
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果在第1行中我放置segfaulting表达式,程序将崩溃而不打印任何东西(如预期的那样).
但是为什么上面的代码打印"asdf"并且在没有缓冲区的情况下不会被刷新?什么是引擎盖下的,为什么它按预期工作?
Ray*_*hen 18
这是通过C++语言规范中的这两节来完成的:
[basic.start.main]
return语句
main具有离开main函数并exit使用返回值作为参数调用的效果.
和
[lib.support.start.term]
该功能
exit在本国际标准中有其他行为:
- ...
- 接下来,刷新所有带有未写入缓冲数据的开放C流.
- ...