リストを使用した後に要素を削除しようとしている二重リンク リスト (この場合は素数を格納するため) を作成しました。リストのデストラクタに単純なループを記述しました。ただし、各要素が削除された後、各要素に保持されている値を出力できます。メモリが解放された後、「不正なアクセス」エラーが発生することが予想されます。さらに、Activity Monitor を使用して、プログラム実行のさまざまな時点で使用中のリソースを表示しました。リンクされたリストが作成されたとき (明らかに) メモリ使用量が大幅に増加しましたが、デストラクタが呼び出された後もわずかに増加しました。私は何かが間違っていると収集します。
リストの各メンバーに対して「delete」ステートメントが呼び出されていますが、何もしていないようです。以下のデストラクタからの関連コードを含めました。リストと要素は、'new' ステートメントを使用して作成されます。「current」、「head」、および「tail」タグは、リスト要素 (ノード) へのポインターです。
PrimeList::~PrimeList()
{
// delete list elements
do
{
current = tail;
tail = tail->previous;
delete current;
}
while( tail != NULL );
// nullify the pointers
head = NULL;
tail = NULL;
current = NULL;
// reset size
size = 0;
}
洞察はありますか?