我已經爲我的class類實現了一個List,並且在程序試圖刪除我的List時檢測到HEAP CORRUPTION。它在析構函數中進入循環,並刪除第一個元素,然後當他第二次時,並試圖摧毀「新」頭,我得到堆腐敗錯誤。我不明白爲什麼會出錯。任何幫助將非常感激。HEAP CORRUPTION DETECTED:Normal Block(#151)at 0x00DB4E70
Word.h:
#include <cstring>
class Word
{
protected:
char* word;
char* type;
public:
Word();
Word(char);
Word(char *);
Word(char *, int);
Word(const Word&);
Word& operator=(const Word &);
void setWord(char);
void setWord(char *);
void setWord(char*, int);
void setType(char);
void setType(char*);
void setType(char*, int);
~Word();
};
WordList.h:
#include "Word.h"
#include <cstdlib>
class WordList
{
public:
struct Node
{
Word data;
Node *next, *prev;
//~Node();
};
Node *head;
Node *tail;
WordList();
~WordList();
void add(Word &d);
};
WordList.cpp:
#include "WordList.h"
WordList::WordList(void)
{
head = nullptr;
tail = nullptr;
}
WordList::~WordList(void)
{
while(head != nullptr)
{
Node *n = head->prev;
delete head;
head = n;
}
}
void WordList::add(Word &d)
{
Node *n = new Node;
n->data = d; // I overload =, and it copies information from d to data
n->next = head;
if (head!=nullptr)
head->prev = n;
if(head == nullptr){
head = n;
tail = head;
} else
head = n;
}
嘗試在應用程序驗證器下運行它 - 發生損壞時可能會遇到斷點。 – Pete 2013-02-28 10:09:15