Тема: Помилка expression:_CrtIsValidHeapPointer(block)
Я написала код:
#include <iostream>
using namespace std;
class STACK
{
private:
int* stack;
int count = 0;
public:
//конструктор без параметру
STACK()
{
cout << "Enter number of items:";
cin >> count;
stack = new int[count];
for (int i = 0;i < count;i++) {
cout << "Item["<<i+1<<"]:";
cin >> stack[i];
}
cout << " Constructor is did\n" << endl;
}
//конструктор з параметром
STACK(int count)
{
this->count = count;
stack = new int[this->count];
for (int i = 0;i < this->count;i++)
{
cout << "Item[" << i + 1 << "] :";
cin >> stack[i];
}
cout << " Constructor 2 is did.\n" << endl;
}
//деструктор
~STACK()
{
count = 0;
delete[]stack;
cout << " Destructor is did\n"<<this <<endl;
}
//функція виводу стеку
void Print()
{
int pos = 0;
cout << " Stack:" << endl;
if (count == 0)
cout << " is empty." << endl;
for (int i = count - 1;i >= 0;i--)
{
cout << " Item[" << pos++ << "]=" << stack[i] << endl;
}
cout << endl;
}
//перевантажений операція порівняння
bool operator>(const STACK& st)
{
return this->count > st.count;
}
//перевантажена операція додавання елемента
void operator+(int item)
{
int* point = stack;
stack = new int[count+1];
count++;
for (int i = 0;i < count;i++)
stack[i] = point[i];
stack[count-1] = item;
delete[]point;
}
//функція сортування стеків
friend void sort(STACK mas_of_stacks[], STACK& st, int number)
{
int hlpr;
for (int i = 0;i < number;i++)
{
hlpr = i;
if (mas_of_stacks[hlpr] > mas_of_stacks[i + 1])
{
hlpr = i + 1;
st = mas_of_stacks[hlpr];
mas_of_stacks[hlpr] = mas_of_stacks[i];
mas_of_stacks[i] = st;
}
}
}
//функція об'єднання елементів стеків
friend int* Gathering(STACK mas_of_stacks[], int size)
{
int* arr=0, kst = all_elem_count(mas_of_stacks, size), hlpr = 0;
arr = new int[kst];
hlpr = kst;
for (int i = 0;i < size;i++)
for (int j = mas_of_stacks[i].count - 1;j >= 0;j--)
arr[--hlpr] = mas_of_stacks[i].stack[j];
return arr;
}
//функція обчислення кількості елементів у масиві
friend int all_elem_count(STACK mas[], int size)
{
int k = 0;
for (int i = 0;i < size;i++)
k += mas[i].count;
return k;
}
};
int main()
{
int size,*stacks,kst=0;
cout << "Enter number of stacks:" << endl;
cin >> size;
STACK *mas = new STACK [size],for_sort(0);
sort(mas,for_sort, size);
for (int i = 0;i < size;i++)
mas[i].Print();
stacks = Gathering(mas, size);
kst = all_elem_count(mas,size);
cout << "All elements:" << endl;
for (int i = 0;i < kst;i++)
cout <<"Item["<< i+1 <<"]: " << stacks[i] << endl;
if (stacks != 0)
delete[] stacks;
delete[] mas;
return 0;
}
Допоможіть ,будь ласка. Чому при компіляції вибиває помилку - expression:_CrtIsValidHeapPointer(block)?