假设我有一个由类定义的双向链表
class list
{
/*...*/
private:
struct node
{
node* prev;
node* next;
int* value;
}
node* first; //NULL if none
node* last; //NULL if none
/*...*/
}
如果我想为此列表创建析构函数,是否必须显式删除该值?
list::~list()
{
node* move = first;
while(first)
{
first = move->next;
delete move;
move = first;
}
}
上述是否可以确保没有内存泄漏?还是我必须这样做:
list::~list()
{
node* move = first;
while(first)
{
first = move->next;
delete move->value;
delete move->prev;
delete move;
move = first;
}
}
我对如何确保在这种情况下没有内存泄漏感到困惑。如何专门处理节点中的指针?如果我删除 move 它会自动处理这些吗?