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

エラーを修正できました。コードの別の場所にありました。実際、この質問を投稿した直後に見つけました。助けてくれてありがとう。

于 2013-04-11T04:17:45.003 に答える
0
Queue<T>* temp = new Queue<T>();//THIS IS THE LEAKED MEMORY

これは、どこかでメモリを解放する必要があるためです。

delete temp;

そしておそらくあなたはそれをしません。あなたが示したこのコードではありません。したがって、必要に応じてこれを削除してください。

于 2013-04-10T21:43:18.290 に答える