发生错误后执行的代码
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"
被打印出来了。为什么?
这个问题的答案对我来说很重要,因为大多数时候我使用 cout
或 cerr
来查找导致 运行 时间错误的行。
您的程序有未定义的行为,因为 push_back
使引用 iref
无效。 C++ 标准没有为程序的执行指定 any 行为。问题 "why" 无法在 C++ 上下文中回答。
我已经使用 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"
被打印出来了。为什么?
这个问题的答案对我来说很重要,因为大多数时候我使用 cout
或 cerr
来查找导致 运行 时间错误的行。
您的程序有未定义的行为,因为 push_back
使引用 iref
无效。 C++ 标准没有为程序的执行指定 any 行为。问题 "why" 无法在 C++ 上下文中回答。