以下代码导致rasberry pi mod2系统上的Rasbian发行版出现总线错误。
#include <thread>
#include <iostream>
class bar {
public:
void startFoo() {
std::thread t(&bar::foo, this); //bus error because of this line
t.join();
}
void foo() {
std::cout << "hello from member function" << std::endl;
}
};
int main()
{
bar b;
b.startFoo();
return 0;
}
此link表示当您的处理器甚至无法尝试请求的内存访问时,会发生总线错误。但在我的代码中,我在线程中访问类自己的成员函数。我无法解释它是如何导致总线错误的。有人可以澄清我吗?附:源代码在运行在x86 PC上的Ubuntu OS上交叉编译,二进制文件在Rasberry pi(ARM)上进行了测试。