我写了一个双向链表(在这种情况下存储素数),在使用列表后我试图删除其中的元素。我在列表的析构函数中编写了一个简单的循环。但是,我可以在删除每个元素后打印每个元素中保存的值。释放内存后,我预计会出现“错误访问”错误。此外,我使用 Activity Monitor 来显示在程序执行的各个点上使用的资源。创建链表时(显然)内存使用量大幅增加,但在调用析构函数后也有小幅增加。我认为有什么地方不对劲。
正在为列表的每个成员调用“删除”语句,但它似乎没有做任何事情。我在下面的析构函数中包含了相关代码。列表和元素是使用“new”语句创建的。“当前”、“头”和“尾”标签是指向列表元素(节点)的指针。
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;
}
有什么见解吗?