0

我正在尝试基于自定义向量创建一个通用队列类。我的代码运行良好,因为它输出了我希望它给我的输入的所有内容,并且不会崩溃。但是,如果我调用 my 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];

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

4

1 回答 1

0

你只被允许delete指向一个返回给你的指针new(同样的原则适用于mallocand free)。

将原始指针替换为

typeArray = &typeArray[1];

这是一个错误

delete [] typeArray;

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

于 2013-09-29T11:08:04.700 回答