未加载wntdll.pdb 包含查找模块 ntdll.dll 的源文件所需的调试信息

问题遇到的现象和发生背景

自己写的一个根据动态数组创建一个单链表的程序,创建过程都没有问题,在最后一步进行析构的时候出现了标题错误。

问题相关代码,请勿粘贴截图
LinkList a;
a.CreateLinkList(arr, size);
a.TravalLinkList();
a.DeleteAll();
a.TravalLinkList();
a.~LinkList();
delete[] arr;

arr是一个动态数组,size是该数组的长度
void LinkList::CreateLinkList(int arr[], int size)
{
ElemType* pnew, * ptemp;
ptemp = head;
for (int i = 0; i < size; i++) { //将值一个一个插入单链表中
pnew = new ElemType;
pnew->data = arr[i];
pnew->next = NULL; //新节点的下一个地址为NULL
ptemp->next = pnew; //当前结点的下一个地址设为新节点
ptemp = pnew; //将当前结点设为新节点
}
}
该函数是创建单链表的函数
LinkList::~LinkList()
{
delete head; //删除头结点
}
该函数是析构函数
//删除所有数据
void LinkList::DeleteAll()
{
ElemType* p = head->next;
ElemType* ptemp = new ElemType;
while (p != NULL) //在头结点的下一个节点逐个删除节点
{
ptemp = p;
p = p->next;
head->next = p;
ptemp->next = NULL;
delete ptemp;
}
head->next = NULL; //头结点的下一个节点指向NULL
}
该函数是删除链表所有内容的函数
通过调试,最终报错的地方就是析构函数。

运行结果及报错内容

img

我的解答思路和尝试过的方法

有人说是指针越界的问题,我猜测可能是析构函数没有被重写,导致a被析构了两次,因为把析构函数屏蔽之后,就不报错了。

我想要达到的结果