自定义队列中C++错误:未分配正在释放的指针



我正在尝试基于自定义向量创建一个通用队列类。我的代码运行良好,因为它输出了我想要的所有内容,给定我的输入,并且不会崩溃。但是,如果我调用我的queue.pop(),当程序完成执行时,我会得到以下内容:

a.out(6878) malloc: *** error for object 0x7fb210403981: pointer being freed was not allocated

我的向量是围绕 T 类型的数组构建的,声明为 T * typeArray; .queue.pop()所做的只是从我的向量中调用一个函数,vector.pop_front() .似乎导致问题的行是

// Assign the pointer to the second position in the array. 
typeArray = &typeArray[1];

我做错了什么?为什么这不起作用?谢谢!

只能delete一个由new返回给你的指针(同样的原则适用于mallocfree)。

将原始指针替换为

typeArray = &typeArray[1];

这是一个错误

delete [] typeArray;

您需要为分配的存储和队列头维护单独的指针。

相关内容

  • 没有找到相关文章