Я пытался создать односвязный список для домашней работы. Казалось, что все работает отлично, пока я не попробовал его со связанным списком связанных списков, он не смог освободить связанный список внутри и оставил некоторые утечки. Что я сделал не так? Некоторые говорят, что я просто игнорирую это, ОС очистит меня, но я действительно не хочу оставлять утечки. Все остальное кажется нормальным, поэтому я публикую только часть деструктора.
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>*>;
не удалось освободить связанные списки внутри. Что не так с этим? Мне нужно использовать указатель, потому что иногда мне нужно знать, является ли он пустым или нет.