我正在尝试基于自定义向量创建一个通用队列类。我的代码运行良好,因为它输出了我想要的所有内容,给定我的输入,并且不会崩溃。但是,如果我调用我的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
返回给你的指针(同样的原则适用于malloc
和free
)。
将原始指针替换为
typeArray = &typeArray[1];
这是一个错误
delete [] typeArray;
您需要为分配的存储和队列头维护单独的指针。