我有一些代码可以创建一个同步队列,我在数据收集类中使用它来报告它的数据。创建队列的方法正在发出警告:
Queue^% DataGatherer::AddOutputQueue()
{
Queue^ outputQueue = Queue::Synchronized(gcnew Queue);
AddOutputQueue(outputQueue);
return outputQueue;
}
1>。\ DataGatherer.cpp(21):警告C4172:返回本地变量或临时的地址
这是一个我应该担心的警告,还是我在这种情况下是安全的,只是编译器对Queue::Synchronized
返回Queue^
感到困惑?代码似乎运行良好,但警告让我感到紧张; - )
答案 0 :(得分:0)
Queue^%
表示通过引用传递的句柄。但是,func中的句柄是一个局部变量,它不能通过引用传递,因为它在func完成时可能会被破坏。从返回类型中删除%
,你没事。
编辑:这并不意味着您的代码似乎有效。它可以在任何时候停止这样做。