在推功能内存泄漏

时间:2021-01-06 18:51:04

标签: memory memory-leaks valgrind unique-ptr false-positive

这是我的初步实施,不存在内存泄漏检测当我打电话推功能。

Class PQ
    {
                …
    Struct NodeData
    {
                …
                std::vector<double> nScores; 
                …          
    }
    std::set<NodeData> NodeSet;//NodeSet is a class property defined as a set of NodeData

    …
    Push()
    {           …
           double data[] = {1,2,3}; 
           NodeSet node;
           for (i=0;i<3;i++) { 
               node.nScores.push_back(data[i]);
           } 
           NodeSet.insert(std::move(node)); 
                            …
    }

…..
}

我在上面的代码修改,以在推功能动态分配存储器,如下。当我记忆测试单独的推送功能,它正在泄漏内存。这是一个有效的内存泄漏。

Class PQ
    {
                …
    Struct NodeData
    {
                …
                unique_ptr<double[]> nScores; 
                …          
    }
    std::set<NodeData> NodeSet;//NodeSet is a class property defined as a set of NodeData

    …
    Push()
    {           …
           NodeSet node;
           node.nScores =std::make_unique<double[]>(3);
           NodeSet.insert(std::move(node)); 
                            …
    }

…..
}

0 个答案:

没有答案