发生错误后执行的代码

Code executed after an error has occured

我已经使用 g++ 版本 4.8.2 编译并 运行 以下 C++ 代码:

vector<int> ivec{0,1,2};
int& iref = ivec[1];
for (int i=3;i<100;++i)
   ivec.push_back(i);
iref = 10;
cerr<<"After Error"<<'\n';
return 0;

程序将在第 iref = 10; 行按预期崩溃,因为引用无效。但是字符串 "After Error" 被打印出来了。为什么?

这个问题的答案对我来说很重要,因为大多数时候我使用 coutcerr 来查找导致 运行 时间错误的行。

您的程序有未定义的行为,因为 push_back 使引用 iref 无效。 C++ 标准没有为程序的执行指定 any 行为。问题 "why" 无法在 C++ 上下文中回答。