Как правильно удалить связанный список? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытался создать односвязный список для домашней работы. Казалось, что все работает отлично, пока я не попробовал его со связанным списком связанных списков, он не смог освободить связанный список внутри и оставил некоторые утечки. Что я сделал не так? Некоторые говорят, что я просто игнорирую это, ОС очистит меня, но я действительно не хочу оставлять утечки. Все остальное кажется нормальным, поэтому я публикую только часть деструктора.

template<typename T>
class linkedList
{
protected:
    node<T>* pHead;
    node<T>* pTail;
    int size;
public:
    linkedList() : pHead(nullptr), size(0), pTail(NULL) {};

    ~linkedList() { this->cleanup(); };

    void cleanup()
    {
        while (pHead) {
            node<T>* p = pHead;
            pHead = pHead->pNext;
            delete p;
        }
    };

Я пробовал его с разными типами данных, и он работает нормально, но когда я попробовал

auto l = new linkedList<linkedList<int>*>;

не удалось освободить связанные списки внутри. Что не так с этим? Мне нужно использовать указатель, потому что иногда мне нужно знать, является ли он пустым или нет.

...