我很困惑,爲什麼在我創建了一個指針並嘗試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
產生一個錯誤?
什麼是ptree? – 2012-04-25 15:58:51
'func()'中的'pt'是什麼? – 2012-04-25 16:05:51
pt是Boost Property Tree:http://www.boost.org/doc/libs/1_41_0/doc/html/property_tree.html – nf313743 2012-04-25 16:15:06