我有一个创建一堆局部变量的函数,然后将它们的地址传递给在单独线程中运行的函数 - 如下所示:
void MyFunction()
{
MyClass a;
AnotherClass b;
...
FinalClass z;
CallFunctionInNewThread(&a,&b,&c,...,&z);
}
当然,当 MyFunction 超出范围时,这些变量会被销毁(因此线程中的函数现在指向垃圾),因此此设置不起作用。我在这里有什么选择?如果我用'new'分配堆上的变量,我将永远没有机会删除它们。如果我让它们成为智能指针或类似的东西,我必须让线程函数接受它们作为智能指针,否则它们的引用计数不会增加,所以它们仍然会立即被销毁。看起来他们有点想成为 MyFunction 的包装类的成员变量,但是有几百行和几十个这样的东西,那将是疯狂的混乱。还有其他选择吗?