当我将functor传递给线程析构函数时调用

时间:2014-04-26 19:57:08

标签: c++11

我必须使用仿函数Runner

在c ++ 11中运行线程
class Runner {
public:
Runner(int){create toData on heap;}
~Runner(){delete toData;}

void operator()()const{
 loop();

}


private:

pointer* toData;

};

当我尝试运行类似

的线程时
Runner temp(1);
thread(temp);

thread(move(temp));

析构函数被调用并删除数据并获得分段错误。 怎么避免这个?

1 个答案:

答案 0 :(得分:4)

您是否编写了正确的副本或移动复制构造函数和运算符?