クラスによって定義された双方向にリンクされたリストがあるとします
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;
}
}
この場合、メモリがリークしないようにする方法について混乱しています。ノード内のポインターを具体的にどのように処理すればよいですか? 移動を削除すると、これらは自動的に処理されますか?