队列中的内存泄漏

时间:2013-04-10 21:36:23

标签: c++ memory-leaks queue

我的Queue类有内存泄漏。我使用valgrind来定位内存泄漏,并且它发生在同一行上。该行标记在代码中。

template <typename T>
void Queue<T>::enqueue(const T& x)
{

    if(isEmpty())
    {
        Queue<T>* temp = new Queue<T>();//THIS IS THE LEAKED MEMORY
        m_data = x;
        m_next = temp;
        temp->m_next = NULL;
        return;

    }


    Queue<T>* temp = this;

    while(temp->m_next != NULL)
    {
        temp = temp->m_next;
    }
    Queue<T>* node = new Queue<T>();
    temp->m_data = x;
    node->m_next = temp->m_next;
    temp->m_next = node;
    return;
}

函数isEmpty()如下:

template <typename T>
bool Queue<T>::isEmpty() const
{
    return (m_next==NULL);
}

任何关于此的想法都会很棒。

2 个答案:

答案 0 :(得分:0)

Queue<T>* temp = new Queue<T>();//THIS IS THE LEAKED MEMORY

这是因为你必须通过

在某个地方释放记忆

delete temp;

可能你不这样做。不在您已展示的此代码中。因此,只需在适当的时候删除它。

答案 1 :(得分:0)

我能够修复错误。它在代码的其他地方。我在发布这个问题之后几乎立刻就找到了它。谢谢你的帮助。