Я создаю простую очередь, однако получаю странную ошибку:
compile (46096,0x7fffb263d380) malloc: * ошибка для объекта 0x7f9c61c00340: освобожденный указатель не выделен * установить точку останова в malloc_error_break для отладки
Если я уменьшу количество методов постановки в очередь, я просто получу ошибку сегментации.
Мой основной класс:
#include <iostream>
#include "queue.h"
using namespace std;
template <typename ItemType>
void enqueue(const ItemType &i, node<ItemType>* &n, const long &p) {
node<ItemType> *nn = new node<ItemType>;
nn->item = i;
nn->next = n;
n = nn;
}
template <typename ItemType>
ItemType dequeue(node<ItemType>* &n) {
ItemType fr;
node<ItemType> *ptr;
ptr=n;
n = n->next;
while(ptr->next != NULL){
ptr = ptr->next;
}
fr = ptr->item;
delete ptr;
return fr;
}
int main() {
node<int> *head;
enqueue(13,head, 1);
enqueue(10,head, 2);
enqueue(18,head, 3);
cout<<head->item<<"\t"<<head->next->item<<"\t"<<head->next->next->item<<endl;
cout<<dequeue(head)<<"\t";
cout<<dequeue(head)<<"\t";
cout<<dequeue(head)<<endl;
//cout<<dequeue(head)<<endl; // create error cathcing
}
Мой узелкласс оболочки:
#include <iostream>
template <typename ItemType>
struct node {
ItemType item;
node<ItemType> *next;
int priority;
};