glibc检测到free()指针无效

时间:2016-03-03 03:32:43

标签: c++ pointers glibc

所以,我已经查阅了COUNTLESS其他有关类似主题的帖子,但没有一个能够给我一个满意的答案。我正在编写一个双向链表程序,当我在驱动程序文件中创建一个Queue对象时,我收到此错误:

  

*检测到glibc * ./driver.out:free():指针无效:0x0000000000400773 ***

它正在做的就是调用构造函数(字面意思是Main()中唯一的代码):

Queue341<int> myQueue;

这是构造函数:

template <class T>
Queue341<T>::Queue341()
{
}

所有正确的头文件都包括,保护等。我只是不明白这个错误......我从来没有使用过免费()!!!

编辑: 这是Destructor代码: 模板

Queue341<T>::~Queue341(){
  Clear();
}

这里是Clear():

template <class T>
bool Queue341<T>::Clear(){
  Node341<T> *current, *next;

  current = this->m_head;
  while (current != NULL){
    next = current->m_next;
    delete current;
    current = next;
  }

  return true;
}

1 个答案:

答案 0 :(得分:0)

  

我只是不明白这个错误   它所做的只是调用构造函数(字面意思是Main()中唯一的代码):

你已经在其他地方损坏了堆。在C++中,如果你有类类型的全局变量,那么很多代码会在main之前(和之后)执行。

  

我从不使用free()

但您使用调用delete的{​​{1}}。

在valgrind下运行你的程序,它会告诉你完全你的问题所在。