在C++中创建队列 - 什么是 malloc 错误?

Creating a Queue in C++ - What is a malloc error?

本文关键字:malloc 错误 什么 C++ 创建 队列      更新时间:2023-10-16

我正在创建一个简单的队列,但是我遇到了一个奇怪的错误:

编译(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;
};

你这样做:node<int> *head;,然后用nn->next = n;排队

这最终会存储未初始化的内存,然后在删除时失败。

试试node<int> *head = NULL;