Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

C++ Debug Asserion Failed using delete function

$
0
0
Hi all,

I created a Queue<T> class in c++,
when I call the destructor and trying to delete the array I get the error:

_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

this is a short of my code:

template <class T> class Queue
{
    
private:
    int head, tail, size, max;
    T *arr;
    static int count;
    
public:
    Queue(int max=10);
    Queue(const Queue &q);
    ~Queue();
    static void init();
    static void print_count();
    bool isEmpty();
    bool isFull();
    bool enQueue(T value);
    bool deQueue(T *pValue);
	Queue merge(Queue<T> q1, Queue<T> q2);
};

template<class T> Queue<T>::Queue(int max = 10)
{
    this->max = max;
    size = 0;
    head = 0;
    tail = 0;
    count++;
    arr = new T[max];
}

template<class T> Queue<T>::Queue(const Queue &q)
{
    max = q.max;
    size = q.size;
    head = q.head;
    tail = q.tail;
    count++;
    arr = new T[max];
    for(int i =0; i < size; i++)
    {
        arr[(head + i) & max] = q.arr[(head + i) % max];
    }
}

template<class T> Queue<T>::~Queue()
{
    count--;
    delete[] arr;
}



calling it from the main:

Queue<int> q1;
q1.~Queue();



I know that there are lots of questions about this error, but I simply couldn't make mine to work.

I'd really appreciate your comments!

Thanks,
Tal

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>