作者提出这段代码在标题之下A bus error on my platform
#include <fstream>
#include <iostream>
int main()
{
std::ofstream log("oops.log");
std::cout.rdbuf(log.rdbuf());
std::cout << "Oops!\n";
return 0;
}
字符串“Oops!\n”被打印到文件“oops.log”中。代码没有恢复cout的streambuf,但是VS2010没有报告运行时错误。
Since log
and std::cout
共享一个缓冲区,该缓冲区可能会被释放两次(一次当log
超出范围,然后在程序终止时再次超出范围)。
这会导致未定义的行为,因此很难说出它在他的机器上触发总线错误但在您的机器上默默失败的确切原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)