C++ 队列中内存泄漏

C++ 队列中内存泄漏,c++,memory-leaks,queue,C++,Memory Leaks,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 =

我的队列类出现内存泄漏。我使用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;
}
任何关于这方面的想法都会很好。

Queue*temp=newqueue()//这是泄漏的内存
Queue<T>* temp = new Queue<T>();//THIS IS THE LEAKED MEMORY
这是因为你必须在某处释放内存,通过

删除temp


也许你没有这么做。在你展示的代码中没有。因此,只要在适当的时候删除它。

我就能够修复错误。它在代码的其他地方。事实上,我几乎是在发布这个问题后立即发现的。谢谢您的帮助。

您正在分配一个新队列,但从未释放它。至少在你展示的代码中没有。这不是我被否决的原因:但你不需要在void method的末尾返回这个值。每个新的方法都应该有一个Delete来匹配它!你能给我们看一下匹配的Delete吗?再给我们看一下dequeue方法。
Queue<T>* temp = new Queue<T>();//THIS IS THE LEAKED MEMORY