首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于刷新缓冲区的例证

2012-09-24 
关于刷新缓冲区的例子下面几种情况导致缓冲区刷新:1. 程序正常结束。作为 main 返回工作的一部分,将清空所

关于刷新缓冲区的例子

下面几种情况导致缓冲区刷新:
1. 程序正常结束。作为 main 返回工作的一部分,将清空所有输出缓冲区。
2. 在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会
在写下一个值之前刷新。
3. 用操纵符(第 1.2.2 节)显式地刷新缓冲区,例如行结束符 endl。
4. 在每次输出操作执行完后,用 unitbuf 操作符设置流的内部状态,从而
清空缓冲区。
5. 可将输出流与输入流关联(tie)起来。在这种情况下,在读输入流时将
刷新其关联的输出缓冲区。
同时书上还说:"警告:如果程序崩溃了,则不会刷新缓冲区"

问题是我为了验证这个警告写的代码达不到要求,应该怎么写?
cout << "hi";
throw runtime_error("崩溃了");
以上代码执行时,程序崩溃了,但"hi"还是输出了!

[解决办法]
这个和Shell、控制台的缓冲策略有关,有些C实现在抛出错误时,并不算崩溃,而是算异常退出,而且可能打印错误。段错误之类的致命错误,这个在Linux下更有可能成功。
[解决办法]
试试我这个版本,其实LZ的方法我也试过,但是是能达到证明的效果的,可能平台相关。

C/C++ code
# include <iostream># include <stdexcept>using namespace std;int main(){    cout << "hi";//    throw runtime_error("hi");    int * i = NULL;    *i = 0;    return 0;} 

热点排行
Bad Request.