我是一名计算机科学专业的学生,任务是创建动态数据结构、链表。我目前正在研究一个单链表,并已成功构建了添加、删除和转储所有节点数据的功能。
但是,请记住我的“高级编程”讲师说过,为了避免混淆和其他问题,当从列表中删除节点或释放任何对象的内存时,你应该让它发生在它的解构器中。所以我搬家了:
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();
这给了我一个断言错误。我假设这是我在节点的解构器中使用“this”?
谢谢你的时间。