我只是想运行一个使用boost
线程的简单示例。这是代码:
#include <iostream>
#include <boost/thread.hpp>
void workerFunc()
{
std::cout << "hi" << std::endl;
}
int main(int argc, char* argv[])
{
boost::thread workerThread(workerFunc);
workerThread.join();
return 0;
}
但我得到一个例外:
(boost_thread-vc140-mt-1_59.dll) in test.exe: 0xC0000005: Access violation reading location 0x0000000000000019.
尽管有例外,该程序仍然有效,我可以在控制台中看到hi
。我使用VS2015,x64配置。我的错误在哪里?
答案 0 :(得分:2)
有明显未定义的行为,因为代码没有任何问题。
那么, 错误了什么?
构建配置,部署(运行时环境)或这两者之间可能存在错误。
具体做法是:
这两个条件都引入了Undefined Behaviour。任何事情都可能发生。