这真的回到了当地的地址吗?

时间:2010-02-02 11:38:59

标签: multithreading c++-cli queue

我有一些代码可以创建一个同步队列,我在数据收集类中使用它来报告它的数据。创建队列的方法正在发出警告:

Queue^% DataGatherer::AddOutputQueue()
{
    Queue^ outputQueue = Queue::Synchronized(gcnew Queue);
    AddOutputQueue(outputQueue);
    return outputQueue;
}
  

1>。\ DataGatherer.cpp(21):警告C4172:返回本地变量或临时的地址

这是一个我应该担心的警告,还是我在这种情况下是安全的,只是编译器对Queue::Synchronized返回Queue^感到困惑?代码似乎运行良好,但警告让我感到紧张; - )

1 个答案:

答案 0 :(得分:0)

Queue^%表示通过引用传递的句柄。但是,func中的句柄是一个局部变量,它不能通过引用传递,因为它在func完成时可能会被破坏。从返回类型中删除%,你没事。

编辑:这并不意味着您的代码似乎有效。它可以在任何时候停止这样做。