我有以下代码用于在图中创建节点。运行静态检查工具(覆盖率)时出现资源泄漏错误。如果您能指出如何改进代码,我将不胜感激:
class node {
public :
explicit node(std::string& name) : m_name(name) { }
void setlevel(int level)
{ m_level = level; }
private :
...
}
class graph {
public :
void populateGraph()
{
std::string nodeName = getNodeName();
/* I get error saying variable from new not freed or pointed-to in function
nc::node::node(const std::string...) */
node* NodePtr = new node(nodeName);
/* I get error saying variable NodePtr not freed or pointed-to in function
nc::node::setLevel(int) */
NodePtr->setLevel(-1);
if (m_name2NodeMap.find(nodeName) == m_name2NodeMap.end())
m_name2NodeMap[nodeName] = NodePtr;
NodePtr = NULL;
}
....
private :
std::map< std::string, node*> m_name2NodeMap;
}
我以为我需要delete NodePtr
in populateGraph
,但随后发布它会调用节点析构函数 ( ~node
) 并从图中删除节点。所以,我开始NodePtr=NULL
看看它是否有帮助,但事实并非如此。