0

我的 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);
}

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

4

2 回答 2

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

这是因为你必须在某处释放内存,通过

delete temp;

也许你不这样做。不在您展示的这段代码中。所以在适当的时候简单地删除它。

于 2013-04-10T21:43:18.290 回答
0

我能够修复错误。它在代码的其他地方。实际上,我在发布此问题后几乎立即找到了它。谢谢您的帮助。

于 2013-04-11T04:17:45.003 回答