Я пишу программу, которая использует связанный список, и в моем коде я создаю указатель на объект, используя «новое» ключевое слово. Насколько я понимаю, в любое время, когда вы используете новое ключевое слово, вы также должны иметь удаление, и мне интересно, правильно ли я делаю это.Как правильно освободить память, выделенную связанным списком?
#include"gameClass.h"
#include"card.h"
#include"list.h"
#include"node.h"
using namespace std;
List::List()
{
head = NULL;
}
List::~List()
{
delete head;
}
void List::add(Card* tmpCard)
{
if (head == NULL)
{
Node* tmpNode;
tmpNode = new Node;
tmpNode->setNext(NULL);
tmpNode->setData(tmpCard);
head = tmpNode;
delete tmpNode;
}
else
{
Node* tmpNode;
tmpNode = new Node;
tmpNode->setNext(head->getNext());
tmpNode->setData(tmpCard);
head = tmpNode;
delete tmpNode;
}
}
Card * List::remove()
{
if (head != NULL)
{
//Card* tmpCard;
Node* tmpNode;
tmpNode = new Node;
tmpNode->setNext(head->getNext());
tmpNode->setData(head->getData());
head->setNext(tmpNode->getNext());
delete tmpNode;
}
return nullptr;
}
Установите новый 'head' и сразу же удалите его? Слишком плохо ... – MikeCAT