我写在C此功能++作为一个更大计划的一部分删除两次:错误:调用同一个内存位置
Object Single_list<Object>::pop_front() {
//Single_node<Object> *tmp_front;
//Object hold;
if (empty()) {
throw underflow();
}
Single_node<Object> first_node = front();
Single_node<Object> *ptr = list_head;
list_head = list_head->next();
delete ptr;
return first_node.retrieve();
}
然而,当我尝试使用这个功能我得到以下信息:
WARNING: calling delete twice on the same memory location: 0x100100160
我真的很困惑,我没有删除指针(假设这是什么导致问题?)两次。
任何意见将不胜感激。
按照要求,这里的构造,为Single_Node检索功能,虽然我不知道这将是关于删除错误,我得到多大的帮助:
template <typename Object>
Single_node<Object>::Single_node(const Object &e, Single_node<Object> *n):element(e), next_node(n)
{
// empty constructor
}
template <typename Object>
Object Single_node<Object>::retrieve() const
{
return element;
}
template <typename Object>
Single_node<Object> *Single_node<Object>::next() const
{
return next_node;
}
如果这真的是唯一相关的代码,那么编译器是错误的。有时可能会出错。 – 2011-06-12 02:44:40
...但几乎从不。 – 2011-06-12 02:47:53
请发布一些显示问题的完整代码 – Mankarse 2011-06-12 02:49:36