社区讨论

关于 freopen 的一个问题

学术版参与者 9已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mi0vd7bn
此快照首次捕获于
2025/11/16 06:39
4 个月前
此快照最后确认于
2025/11/17 09:13
4 个月前
查看原帖
rt,今天在模拟赛的时候出现了一个问题,如下。
这是我的代码简略形式:
CPP
for(int i=1;i<=700;i++){
    cout<<i<<"\n";
    //correct operation...
}
cout<<"hello\n";
WrongFunction();//一个栈溢出的函数
在这种情况下,会在 exe 窗口产生信息 Process exited after xxx seconds with return value 3221225477.。如果不加同步流的话,按理来说程序输出的应该是 17001\sim 700 的整数和一个 hello
但是今天模拟赛的时候,由于输入数据较大,我用了 freopen 来处理输入输出(没开同步流,用的 cin, cout)。在程序返回信息 3221225477 后,我点击了 .out 文件,发现程序只输出到 699。
我一度认为是循环内的问题,发现怎么查都查不出来,以为是内存问题,还把电脑重启了一遍。
后来我把 freopen("xx.out","w",stdout) 删了,将调试信息全部输出到 exe 窗口,发现就可以输出到 700 和 hello 了,然后 3 分钟就查出了问题。罚坐了三小时。
想问问万能的谷友这个是什么原因。拜谢。

回复

11 条回复,欢迎继续交流。

正在加载回复...