【发布时间】:2011-07-27 11:42:28
【问题描述】:
我正在一个项目中调用一个触发段错误的函数。我解决了这个问题,但在此过程中我注意到以下问题。
当我的代码是格式时;
main(){
...
std::cout << "Looking for segfault\n"; // this does not print
buggyFunction(); // crashes in here
...
}
buggyFunction(){
...
thing_that_causes_segfault;
...
}
“寻找段错误”行没有打印到 STD,并且程序在 buggyFunction 中崩溃。很好,但是当我在 buggyFunction(); 中添加一条 cout 行时;
main(){
...
std::cout << "Looking for segfault\n"; // this now *does* print
buggyFunction();
...
}
buggyFunction(){
...
std::cout << "Now we're INSIDE buggy function\n"; // this prints too
thing_that_causes_segfault;
...
}
在 buggy 函数中,两行都打印(然后崩溃)。
为什么我们会在输出中看到这种差异,这取决于添加了这个额外的输出调用?它与流的处理有关,还是与其他有关?我正在使用 g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3。
【问题讨论】:
标签: c++ compiler-construction g++ stdout