I am having a memory leak with my Queue class. I used valgrind to locate the memory leak, and it is occurring on the same line both times. That line is marked in the code.

```
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;
}

```

The function `isEmpty()` is as follows:

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

```

Any ideas about this would be great.