这是我的初步实施,不存在内存泄漏检测当我打电话推功能。
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));
…
}
…..
}