我很困惑为什么在我创建了一个指针并尝试delete
它之后我收到了错误消息。以下是我一直在使用的一些精简代码:
func()
{
ptree *resultTree = new ptree;
resultTree = &getNodeptree(pt);
delete resultTree;
}
ptree& getNodeptree (ptree &pt)
{
BOOST_FOREACH(ptree::value_type &v, pt.get_child("root"))
{
ptree &temp = v.second;
return temp;
}
}
据我了解resultTree
,仍然需要删除,因为它的内存仍在堆上。但是,尝试这样做会产生:
*** glibc detected *** /home/nathan/Programming/Project_Code/MyBoostXmlTest/Debug/MyBoostXmlTest: free(): invalid pointer: 0x00000000018347b8 ***
有人可以解释为什么delete
在这种情况下调用会产生错误吗?