刪除我有我的工作簡單的雙向鏈表例子,但由於某些原因,我不斷收到錯誤:pointer being freed was not allocated
當我嘗試刪除也不會在C++
這裏是一小段代碼片段插入在列表方法
template <class T>
void List<T>::insertAtEnd(T *o)
{
node *newNode = new node;
newNode->o = o;
newNode->next = NULL;
newNode->prev = last;
if(last != NULL)
last->next = newNode;
last = newNode;
if(first == NULL)
first = newNode;
delete(newNode); // This delete call will usually be in another method
} // It is just here right now for testing
該類有兩個實例字段,一個指針到列表的開始和一個指向結束,第一和最後respecitvely結束。每個節點是一個結構如下:
struct node {
node *next;
node *prev;
T *o;
};
到目前爲止,我只將1個節點進行測試,但我總是得到同樣的錯誤。但是,如果我註釋掉行
if(first == NULL)
first = newNode;
它的工作原理。請幫助?由於
編輯:第一和最後一個開端,NULL
。
「first」在哪裏申報? – prelic 2012-01-30 00:56:28
您在此發佈的代碼是否失敗?或者你在談論我們無法看到的其他一些代碼? – 2012-01-30 00:57:18
它是一個全局變量,我在構造函數中設置爲null。同樣去年 – Nosrettap 2012-01-30 00:57:23