【发布时间】:2015-01-06 23:25:16
【问题描述】:
我有以下两个功能,第一个崩溃但第二个运行正常。 我知道对于第一个,对象在 run() 返回时被销毁,但线程仍在执行其 work() 函数,这可能导致未定义的行为。
但是为什么第二个有效?如果我们将对象包装在 shared_ptr 中,它会比线程长吗?
请赐教。谢谢。
void run() {
Object object();
boost::thread t(&Object::work, &object);
}
void run() {
std::shared_ptr<Object> object_(new Object());
boost::thread t(&Object::work, object);
}
【问题讨论】:
标签: multithreading boost shared-ptr