C/C++ ポインタ入門 > リストクラス > デストラクタ
Nobuhide Tsuda
Jan-2014
デストラクタ:
List::~List()
{
Node *ptr = m_dummy->m_next;
for(;;) {
Node *next = ptr->m_next; // 次のノードを delete 前に取得しておく
delete ptr; // ノードのメモリを解放
if( ptr == m_dummy )
break;
ptr = next; // 次のノードに移動
}
}
解説:
- Node *ptr にダミーノードの次のノードを設定します。
- ノードを delete すると、内容が参照出来なくなるので、先に次のノードを取得しておきます。
- delete ptr でノードのメモリを解放します。
- ダミーノードまでを解放したら終了です。
- 次のノードに移動し、ループします。
前:
| 次: