无效读取大小8和地址0x59ffbe8是一个大小为40的块中的8个字节

时间:2014-01-01 22:20:27

标签: c++ memory

所以我得到了这些错误,我在网上到处寻找,尝试改变很多东西,但仍然卡住......

我有一个带有ListNode的LinkedList,ListNode有一个指向名为Candidate的对象的指针。 候选人有一个成员,它是指向对象研究所实例的指针。

当我的主要结束时,然后调用链表的析构函数,并在析构函数中删除所有节点。 由于delete首先调用节点的析构函数,因此在析构函数的Node类中执行以下操作:

class MyLinkedListNode
{
public:
    Candidate *nodeCand;
    MyLinkedListNode *next;
    MyLinkedListNode *prev;
    ~MyLinkedListNode()
    {
        delete this -> nodeCand;
    }

};

在Candidate析构函数中我这样做:

Candidate::~Candidate()
{
    delete this -> school ;
}

当学校属于学院*时。 (每个新候选人都有一个新的研究所)

LinkedList::~LinkedList()
{
    MyLinkedListNode *curr = this -> _head;
    MyLinkedListNode *temp = NULL;
    while(curr != NULL)
    {
        temp = curr;
        curr = curr -> next;
        remove( temp -> nodeCand );
    }
}

并且在Institute destructor中我什么都不做。

真的,我不知道我做错了什么。

0 个答案:

没有答案