小编234*_*40C的帖子

concurrent_vector 无效数据

使用:VC++ 2013

concurrency::concurrent_vector<datanode*> dtnodelst
Run Code Online (Sandbox Code Playgroud)

有时,当我这样做时dtnodelst->at(i).... 我收到一个无效地址 (0XCDCD.. ofc) 这不应该是我推回后的原因,我从不删除或删除任何它(即使我删除它应该已返回已删除的旧地址...但我从未删除,因此情况并非如此)

dtnodelst itm = new dtnodelst ();
....
dtnodelst->push_back(itm);
Run Code Online (Sandbox Code Playgroud)

关于可能发生什么的任何想法?

ps 我正在使用 Windows 线程池。有时.. 我可以做 800 万次插入和查找,一切顺利......但有时甚至 200 次插入和查找都会失败。我有点失落。任何帮助将不胜感激!

感谢和最好的问候

实际代码作为参考

ps 我是否遗漏了某些东西,或者使用正确的格式对过去的代码感到痛苦?我记得它之前是自动对齐的... -_-

struct datanode {       
     volatile int nodeval;
     T val;
};
concurrency::concurrent_vector<datanode*> lst
inline T find(UINT32 key)
{
    for (int i = 0; i < lst->size(); i++)
    {
       datanode* nd = lst->at(i);
       //nd is invalid sometimes
       if (nd)  
       if (nd->nodeval == key)
       {
         return (nd->val);
       }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c++ concurrency multithreading visual-c++ concurrent-vector

3
推荐指数
1
解决办法
237
查看次数