私はコンピューター サイエンスの学生で、動的なデータ構造であるリンク リストを作成する仕事をしています。私は現在、単一リンクリストに取り組んでおり、すべてのノードデータを追加、削除、およびダンプする機能を正常に構築しました。
ただし、私の「高度なプログラミング」の講師が、混乱やその他の問題を避けるために、リストからノードを削除するとき、またはオブジェクトのメモリを解放するときは、デコンストラクター内で実行する必要があると述べたことを思い出してください。だから私は動いた:
delete[] _del;
これはうまく機能し、ノードのデコンストラクターに移動しました:
#include "Node.h"
// Node.cpp
Node::Node(const int &inData, const int &inId)
{
_id = inId;
_data = inData;
nextNode = NULL;
}
// Deconstructor to delete the node when using List.Del()
Node::~Node()
{
delete[] this;
}
私のリストでは、ノードのデコンストラクターは次のようなポインターを介して呼び出されます。
_del->~Node();
これにより、アサーションエラーが発生します。ノードのデコンストラクターで「これ」を使用していると思いますか?
御時間ありがとうございます。